简介
在前端开发中,有时需要获取给定网址的主域名,而不只是 Top-Level Domain(TLD)。这个任务并不简单,通常需要使用正则表达式或解析 URL 等方法。而 npm 包 domainator 则可以方便地完成这个任务。
domainator 是一个轻量级的 JavaScript 库,可以快速、可靠地提取网址的主域名。它不仅支持常见的 TLD(如 .com、.org、.net),还支持新的 TLD(如 .xyz、.io、.app)和国家代码 TLD(如 .cn、.jp、.ca)。
本文将介绍 domainator 的使用方法,并提供示例代码和说明。
安装
使用 npm 可以轻松地安装 domainator。在命令行中执行如下命令即可:
npm install domainator
使用
使用 domainator 后,可以使用下面的方法获取网址的主域名:
const domainator = require('domainator'); let hostname = domainator('http://example.com/path/to/page.html'); console.log(hostname); // output: example.com
domainator
方法接受一个网址作为参数,返回提取出的主域名。如果不能解析,则返回空字符串。
注意,domainator
不会校验网址的有效性,因此需要先对网址进行验证,通常可以使用正则表达式或其他库。
高级用法
定制 TLD 列表
如果需要定制 TLD 列表,可以使用 tldList
方法。此方法允许替换或添加 TLD 到默认列表中:
const tldList = require('domainator/lib/tld_list'); tldList.push('mytld'); const domainator = require('domainator'); let hostname = domainator('http://example.mytld/path/to/page.html'); console.log(hostname); // output: example.mytld
返回子域名
如果需要获取子域名,可以使用 subdomain
方法。此方法返回网址的子域名,如果没有子域名,则返回空字符串:
const domainator = require('domainator'); let hostname = domainator('http://sub.example.com/path/to/page.html'); let subdomain = domainator.subdomain(hostname); console.log(subdomain); // output: sub
支持 punycode 编码
如果需要支持 punycode 编码的网址,可以使用 punycode
选项。此选项默认为 false
,表示不支持 punycode 编码。如果设置为 true
,则允许包含 punycode 编码的域名:
const domainator = require('domainator'); let hostname = domainator('http://xn--fiqs8s.example.cn/path/to/page.html', { punycode: true }); console.log(hostname); // output: xn--fiqs8s.example.cn
总结
本文介绍了 domainator 的使用方法和高级用法。使用 domainator 可以方便地提取网址的主域名,支持定制 TLD 列表、返回子域名和支持 punycode 编码等特性。
domainator 是一个优秀的 JavaScript 库,可用于前端开发中的许多场景。希望读者能够在实践中深入了解和应用 domainator。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005601181e8991b448ddff1