URL
URL 是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的 URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它,
在 Web 开发中,有许多情况需要解析 URL,这篇主要学习如何使用 URL 对象实现这一点
例如,这里是这篇博客文章的路径:
https://www.vipbic.com/thread.html"color: #ff0000">一个完整URL
用一张图片来解释,没有太多的文字描述,在下面的图片中你可以找到一个 URL 的主要包含属性:
URL constructor
URL ()是一个 constuctor 函数,它可以解析 URL 的对象:
const url = new URL(relativeOrAbsolute [, absoluteBase]);
relativeOrAbsolute参数可以是绝对 URL,也可以是相对 URL。如果第一个参数是相对的,那么第二个参数 absoluteBase 必须是绝对 URL,它必须是第一个参数的基础
例如,让我们用一个绝对 URL 初始化 URL():
const url = new URL('http://example.com/path/index.html'); url.href; // => 'http://example.com/path/index.html'
或者合并相对和绝对的 url:
const url = new URL('/path/index.html', 'http://example.com'); url.href; // => 'http://example.com/path/index.html'
创建 URL ()实例后,可以访问实例:
interface URL { href: USVString; protocol: USVString; username: USVString; password: USVString; host: USVString; hostname: USVString; port: USVString; pathname: USVString; search: USVString; hash: USVString; readonly origin: USVString; readonly searchParams: URLSearchParams; toJSON(): USVString; }
可以尝试在浏览中打印
Query string
Search 属性访问前缀为"htmlcode">
const url = new URL( 'http://example.com/path/index.html"htmlcode">const url1 = new URL('http://example.com/path/index.html'); const url2 = new URL('http://example.com/path/index.html"color: #ff0000">Parsing query string访问查询参数比访问原始查询字符串更方便
一种简单的查询参数选择方法提供了 url.searchParams 属性,该属性包含 URLSearchParams 的实例
URLSearchParams 对象提供了许多方法(如 get (param)、 has (param))来访问查询字符串参数
看一个例子:
const url = new URL( 'http://example.com/path/index.html"color: #ff0000">hostnameHostname 属性包含 URL 的主机名:
const url = new URL('http://example.com/path/index.html'); url.hostname; // => 'example.com'pathname
属性获取 URL 的路径名:
const url = new URL('http://example.com/path/index.html"htmlcode">const url = new URL('http://example.com/'); url.pathname; // => '/'hash
可以使用 url.hash 属性访问#后面的参数:
const url = new URL('http://example.com/path/index.html#bottom'); url.hash; // => '#bottom'当 URL 中的散列#时,URL.hash 计算为空字符串” :
const url = new URL('http://example.com/path/index.html'); url.hash; // => ''URL validation
当new URL ()构造函数创建一个实例时,作为副作用,它还验证 URL 的正确性。如果 URL 值无效,则抛出 TypeError
例如,http ://example. com 是一个无效的 URL,因为 http 后面的空格字符
让我们使用这个无效的 URL 来初始化解析器:
try { const url = new URL('http ://example.com'); } catch (error) { error; // => TypeError, "Failed to construct URL: Invalid URL" }因为'http ://example. com'是一个无效的 URL,正如预期的那样,new URL ('http ://example. com')抛出一个 TypeError
URL manipulation
除了访问 URL 属性之外,搜索、主机名、路径名、hash等属性都是可写的ーー因此您可以操作 URL
例如,让我们把现有 URL 的主机名从 red. com 修改为 blue.io:
const url = new URL('http://red.com/path/index.html'); url.href; // => 'http://red.com/path/index.html' url.hostname = 'blue.io'; url.href; // => 'http://blue.io/path/index.html'注意,只有 URL ()实例的
origin
和searchParams
属性是只读的。其他的都是可写的,当你改变它们的时候可以修改 URL总结
URL()构造函数可以方便地在 JavaScript 中解析(和验证) URL
new URL (relativeOrAbsolute [ ,absolute base ])接受作为第一个参数的绝对或相对 URL。如果第一个参数是相对的,则必须将第二个参数指
示为一个作为第一个参数基础的URL
创建 URL()实例后,可以获取到以下实列方法
- url.search 原始查询字符串
- url.searchParams 选择查询字符串参数
- url.hostname 访问主机名
- url.pathname 读取路径名
- url.hash #后面的参数
文章属于翻译,作者部分有所改动,
作者:羊先生
英文原文, https://dmitripavlutin.com/parse-url-javascript/
华山资源网 Design By www.eoogi.com
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】