方法和属性
URL 模块提供了以下方法:
url.parse(urlStr[, parseQueryString][, slashesDenoteHost])
取一个 URL 字符串,并返回一个对象。
给第二个参数传 true,会使用 querystring 模块解析查询字符串。如果为 true,那么 query 属性将总是被指定为一个对象,并且 search 属性总是一个(可能为空)字符串。如果 false,那么 query 属性将不会被解析或解码。默认为 false。
给第三个参数传 true,将会把 //foo/bar 作为 { host: 'foo', pathname: '/bar' } 对待,而不是 { pathname: '//foo/bar' }。默认为 false。
url.format(urlObj)
取一个解析的 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.resolve(from, to)
取一个基础的 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'