JavaScript 原生 URL API

349 阅读2分钟

「这是我参与2022首次更文挑战的第26天,活动详情查看:2022首次更文挑战

介绍

URL API 只有两个接口,分别是 URLURLSearchParams,其中URL 接口主要用于解析,构造,规范化和编码链接地址。而URLSearchParams 定义了一些实用的方法来处理 URL 的查询字符串。 下面我们就详细介绍下这两个接口和其使用方法。

URL 接口

上面说到 URL 接口主要用于解析,构造,规范化和编码链接地址。什么意思呢,简单来说就是可以把链接字符串构造成 URL 对象,以此来方便的获取这个对象的 host、port 等等属性。
比如:现在有一个字符串 const str = 'https://example.com:80?name=bill' 如果我现在想获取这个字符串链接的端口和参数,我们只能通过正则等方式,比较麻烦而且容易出错。我们可以利用 URL 构造函数构造成URL 对象。

const str = 'https://example.com:80?name=bill'
const url = new URL(str);
console.log(url.port) // 80
console.log(url.hostname) // example.com
console.log(url.protocol) // https:

通过 URL 对象我们能很方便的获取到这个链接的所有相关信息。完整的对象如图:

image.png
是不是很实用。

URL对象有两个方法toString()toJSON()。他们都可以把URL 对象重新变回字符串。

URLSearchParams

URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串。简单来说就是用来解析url链接参数用的,new URLSearchParams(init) 返回一个 URLSearchParams 对象。

var searchParams = new URLSearchParams('?name=bill&age=25');

我们看看这个对象的一些常用方法的使用。

get(key)

获取参数中的值。

var searchParams = new URLSearchParams('?name=bill&age=25');
searchParams.get('name'); // bill
searchParams.get('age'); // 25

append(key, value)

插入一个指定的键值对作为新的搜索参数。

var searchParams = new URLSearchParams('?name=bill&age=25');
searchParams.append('hobby', 'game');
searchParams.get('hobby'); // game

getAll(key)

获取这个key对应的所有值,返回一个参数

var searchParams = new URLSearchParams('?name=bill&age=25');
searchParams.append('hobby', 'game');
searchParams.append('hobby', 'code');
searchParams.getAll('hobby'); // ['game', 'code']

delete(key)

删除这个key

var searchParams = new URLSearchParams('?name=bill&age=25');
searchParams.append('hobby', 'game');
searchParams.get('hobby'); // game
searchParams.delete('hobby');
searchParams.get('hobby'); // null

entries()

返回一个迭代器,允许遍历该对象中包含的所有键/值对。

var searchParams = new URLSearchParams('?name=bill&age=25');
console.log([... searchParams.entries()]) // [[ "name", "bill" ], [ "age", "25" ]]

set(key, value)

修改对应的值

var searchParams = new URLSearchParams('?name=bill&age=25');
searchParams.get('name'); // bill
searchParams.set('name', 'edit');
searchParams.get('name'); // edit

总结

以上就是URL API 的内容,在实际业务开发中是很常用的。