提示:本文共有 1263 个字,阅读大概需要 3 分钟。
URL 是 Uniform Resource Locator 的缩写,指的是一个网络资源的地址(网页,图片,文件等)。URL 告知了我们资源的地址以及获取它们的方式(http, ftp, mailto)。
在 JavaScript 中解析 URL 一种快捷的方式是使用 URL API。目前已经在现代浏览器中得到了广泛支持。
在本文中我们将介绍如何使用 URL API 来解析一个 URL 以及它的组件。
URL 结构
我们首先介绍一下一个 URL 的构成部分,这将有助于我们理解接下来的内容。
URL() 构造函数
使用 URL() 构造函数可以解析一个 URL 的组件。
url 参数可以是绝对路径也可以是相对路径,如果第一个参数是相对路径,则第二个参数 base 是必需的,需要填写一个绝对的路径作为基础 URL。
基础使用例子如下:
URL() 实例的 href 属性会返回完整的 URL 字符串。
在创建了 URL() 实例之后,我们就可以访问它的 URL 组件了。如下是 URL() 实例的接口:
解析查询字符串
url.search 属性可以访问 URL 的查询字符串,它的值以问号开头。如果没有查询字符串,则 url.search 会返回一个空字符串。
获取单个查询参数也非常方便,这时我们可以使用 url.searchParams 属性。它指向一个 URLSearchParams 实例。
URLSearchParams 对象提供了许多方法来获取查询字符串参数,如 get(), has() 等。
我们来看一个例子:
url.searchParams.get(‘message’) 返回了 message 查询字符串的值 ‘hello’,而访问不存在的参数 url.searchParams.get(‘missing’) 返回了 null。
hostname
url.hostname 返回 URL 的域名:
pathname
url.pathname 返回 URL 的路径名:
如果 URL 没有路径,则 url.pathname 属性返回一个斜线:
hash
最后,可以用 url.hash 属性来访问 hash。如果 URL 中没有 hash,则返回一个空字符串:
URL 校验
使用 new URL() 构造函数创建实例时,有个额外的作用,它会校验 URL 是否合规。如果 URL 的值无效,会抛出一个 TypeError。
URL 操作
除了可以读取 URL 组件,部分属性如 search, hostname, pathname, hash 是可写的,也就意味着我们可以操作 URL 修改它的组件。
例如,我们可以修改一个 URL 的域名如下:
注意URL实例的属性中只有 origin 和 searchParams 是只读的。所有其他属性都是可读可写的。
总结
URL() 构造函数是在 JavaScript 中解析和校验 URL 的快捷方式,目前已经在现代浏览器得到了广泛支持。使用它可以加速你的项目开发过程,使用原生的 API 也意味着获得性能的提升。
看到此处说明本文对你还是有帮助的,关于“如何在JavaScript中解析URL”留言是大家的经验之谈相信也会对你有益,推荐继续阅读下面的相关内容,与本文相关度极高!