URL 模块提供了以下方法:
取一个 URL 字符串,并返回一个对象。
给第二个参数传 true,会使用 querystring 模块解析查询字符串。如果为 true,那么 query 属性将总是被指定为一个对象,并且 search 属性总是一个(可能为空)字符串。如果 false,那么 query 属性将不会被解析或解码。默认为 false。
给第三个参数传 true,将会把 //foo/bar 作为 { host: 'foo', pathname: '/bar' } 对待,而不是 { pathname: '//foo/bar' }。默认为 false。
取一个解析的 URL 对象,并返回一个格式化的 URL 字符串。
这里展示的是格式化过程是如何工作的:
-
href会被忽略。 -
path会被忽略。 -
protocol有无尾:(冒号)都被同等对待。-
只要
host/hostname存在,http、https、ftp、gopher、file协议会被补全后缀://(冒号-斜线-斜线)。 -
其他的协议
mailto、xmpp、aim、sftp、foo等,会被补全后缀:(冒号)
-
-
slashes如果协议要求://(冒号-斜线-斜线),设置为true。- 只需要对此前未被列为需要斜杠的协议进行设置,如
mongodb://localhost:8000/,或假设host/hostname不存在。
- 只需要对此前未被列为需要斜杠的协议进行设置,如
-
auth如果存在的话,会被使用。 -
hostname如果host不存在的话才会被使用。 -
port如果host不存在的话才会被使用。 -
host会被用来代替hostname和port。 -
pathname对有无前导的/(斜线)都一视同仁。 -
query(对象,详见querystring)如果search不存在的话,会被使用。 -
search会被用来代替query。- 对有无前导的
?(问号)都一视同仁。
- 对有无前导的
-
hash对有无前导的#(井号)都一视同仁。
取一个基础的 URL,和一个链接 URL,并解析它们作为一个浏览器可以理解的一个锚标记。例子:
url.resolve('/one/two/three', 'four') // '/one/two/four'
url.resolve('http://example.com/', '/one') // 'http://example.com/one'
url.resolve('http://example.com/one', '/two') // 'http://example.com/two'