多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 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`: `pathname` 和 `search` 连在一起。 ~~~ 例如: `'/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` 优先使用,将会替代 `hostname` 和`port` - `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' ~~~