在JavaScript中,URL(Uniform Resource Locator)是因特网上标准的资源的地址,通常我们所说的网址就是常见表述。通常,URL的结构包含几个部分,例如:协议://域名:端口/路径?查询字符串#片段标识符
。
协议
(如http, https):指定浏览器和服务器之间通信的规则。域名
(如www.example.com):服务器的地址。端口
(可选,默认为80或443):服务器监听的端口。路径
(如/path/to/file):服务器上的资源路径。查询字符串
(可选,如?key=value):传递给服务器的额外参数。片段标识符
(可选,如#section1):页面内的锚点。URL提供了一种标准的方式来定位和访问网络上的资源。
在JavaScript中,经常需要处理URL,例如:
你可以使用URL
对象来解析一个URL字符串:
const urlString = 'https://www.example.com/path/to/page?query=string#fragment';
const url = new URL(urlString);
console.log(url.protocol); // "https:"
console.log(url.hostname); // "www.example.com"
console.log(url.pathname); // "/path/to/page"
console.log(url.search); // "?query=string"
console.log(url.hash); // "#fragment"
使用URLSearchParams
对象可以方便地获取查询参数:
const params = new URLSearchParams(url.search);
console.log(params.get('query')); // "string"
你可以使用URL
对象来构建新的URL:
const baseUrl = new URL('https://www.example.com');
baseUrl.pathname = '/new/path';
baseUrl.searchParams.append('newParam', 'newValue');
console.log(baseUrl.toString()); // "https://www.example.com/new/path?newParam=newValue"
在URL中,某些字符具有特殊含义,如?
, &
, =
等。如果URL中包含这些字符,需要进行编码。可以使用encodeURIComponent
和decodeURIComponent
函数进行编码和解码。
const encoded = encodeURIComponent('https://www.example.com/?query=string with spaces');
console.log(encoded); // "https%3A%2F%2Fwww.example.com%2F%3Fquery%3Dstring+with+spaces"
const decoded = decodeURIComponent(encoded);
console.log(decoded); // "https://www.example.com/?query=string with spaces"
当需要处理相对URL时,可以使用URL
对象的构造函数,并传入一个基准URL:
const baseUrl = new URL('https://www.example.com/path/');
const relativeUrl = new URL('to/page', baseUrl);
console.log(relativeUrl.toString()); // "https://www.example.com/path/to/page"
领取专属 10元无门槛券
手把手带您无忧上云