chinazhaghai

Node.js 手册: WHATWG URL 分析器- Node 入门博客

原文链接: www.nodebeginner.org

最新发布的Node.js v8.0.0 将在v7.0.0中非实验性的WHATWG URL分析器做了实验性实现,并且完全支持. 下面将介绍你可以如何使用它.

一个像http://www.example.com/foo?bar=1#main的URL,是有几个不同部分组成的 - 例如, 主机域名部分 (www.example.com) 或者 查询部分 (?bar=1, 通常称为查询字符串).

当我们在写Node.js服务端软件的时候,我们通常都需要接触甚至操作这些不同的部分. 虽然可以将一个URL作为简单的字符串来实现, 使用字符串截取或者是正则表达式将它分成几个符合逻辑的部分,但是十分繁琐. 当然,也可以使用专门的库来完成.

虽然在此之前,你可以通过url模块来进行对 URLs 的解析, 但是它提供的一个如今被认为过时的Node.js具体的接口.

url模块现在提供了一个实现标准化WHATWG URL API的附加实现,使得Node.js的url-parsing代码与浏览器解析URL的方式相同.

新的API基于 url 对象,这可以使得将 URL 不同的部分作为对象属性:

var URL = require('url').URL;
var myURL = new URL('http://www.example.com/foo?bar=1#main');

console.log(myURL.host);

// 打印 'www.example.com'

下面是对一个URL组成的概览,以及每个部分的在URL对象属性的命名:

"  https:   //    user   :   pass   @ sub.host.com : 8080   /p/a/t/h  ?  query=string   #hash "
│          │  │          │          │   hostname   │ port │          │                │       │
│          │  │          │          ├──────────────┴──────┤          │                │       │
│ protocol │  │ username │ password │        host         │          │                │       │
├──────────┴──┼──────────┴──────────┼─────────────────────┤          │                │       │
│   origin    │                     │       origin        │ pathname │     search     │ hash  │
├─────────────┴─────────────────────┴─────────────────────┴──────────┴────────────────┴───────┤
│                                            href                                             │
└─────────────────────────────────────────────────────────────────────────────────────────────┘

表示一个URL的 URL对象,也可以被用来修改这些部分:

var URL = require('url').URL;
var myURL = new URL('http://www.example.com/foo?bar=1#main');

myURL.protocol = 'https';

myURL.search = '?newBar=2';

console.log(myURL.href);

// prints 'https://www.example.com/foo?newBar=2#main'

Node入门博客中,可以了解更多关于如何使用 URLs 和 通过Node.js搭建属于你自己的服务器应用 - 广泛的 Node.js 手册 的第一部分现在免费