知识共享许可协议
本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。

Node.js v4.2.4 手册 & 文档


URL#

稳定度: 3 - 稳定

该模块包含用以 URL 解析的实用函数。 使用 require('url') 来调用该模块。

不同的 URL 字符串解析后返回的对象会有一些额外的字段信息,仅当该部分出现在 URL 中才会有。以下是一个 URL 例子:

'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'

  • href: 所解析的完整原始 URL。协议名和主机名都已转为小写。
例如: `'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'`
  • protocol: 请求协议,小写
例如: `'http:'`
  • host: URL主机名已全部转换成小写, 包括端口信息
例如: `'host.com:8080'`
  • auth:URL中身份验证信息部分
例如: `'user:pass'`
  • hostname:主机的主机名部分, 已转换成小写
例如: `'host.com'`
  • port: 主机的端口号部分
例如: `'8080'`
  • pathname: URL的路径部分,位于主机名之后请求查询之前, including the initial slash if present.
例如: `'/p/a/t/h'`
  • search: URL 的“查询字符串”部分,包括开头的问号。
例如: `'?query=string'`
  • path: pathnamesearch 连在一起。
例如: `'/p/a/t/h?query=string'`
  • query: 查询字符串中的参数部分(问号后面部分字符串),或者使用 querystring.parse() 解析后返回的对象。
例如: `'query=string'` or `{'query':'string'}`
  • hash: URL 的 “#” 后面部分(包括 # 符号)
例如: `'#hash'`

以下是 URL 模块提供的方法:

url.parse(urlStr, [parseQueryString], [slashesDenoteHost])#

输入 URL 字符串,返回一个对象。

将第二个参数设置为 true 则使用 querystring 模块来解析 URL 中的查询字符串部分,默认为 false

将第三个参数设置为 true 来把诸如 //foo/bar 这样的URL解析为 { host: 'foo', pathname: '/bar' } 而不是 { pathname: '//foo/bar' }。 默认为 false

url.format(urlObj)#

输入一个 URL 对象,返回格式化后的 URL 字符串。

  • href 属性会被忽略处理.
  • protocol无论是否有末尾的 : (冒号),会同样的处理
    • 这些协议包括 http, https, ftp, gopher, file 后缀是 :// (冒号-斜杠-斜杠).
    • 所有其他的协议如 mailto, xmpp, aim, sftp, foo, 等 会加上后缀 : (冒号)
  • auth 如果有将会出现.
  • hostname 如果 host 属性没被定义,则会使用此属性.
  • port 如果 host 属性没被定义,则会使用此属性.
  • host 优先使用,将会替代 hostnameport
  • pathname 将会同样处理无论结尾是否有/ (斜杠)
  • search 将会替代 query属性
  • query (object类型; 详细请看 querystring) 如果没有 search,将会使用此属性.
  • search 无论前面是否有 ? (问号),都会同样的处理
  • hash无论前面是否有# (井号, 锚点),都会同样处理

url.resolve(from, to)#

给定一个基础URL路径,和一个href 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'