Node.js:url

在node运行环境中输入url:

> url
url
{ parse: [Function: urlParse],
  resolve: [Function: urlResolve],
  resolveObject: [Function: urlResolveObject],
  format: [Function: urlFormat],
  Url: [Function: Url] }

可以看到有五个方法。

1.url.parse():解析一个路径

例如:

> url.parse('http://imooc.com/course/list')
Url {
  protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'imooc.com',
  port: null,
  hostname: 'imooc.com',
  hash: null,
  search: null,
  query: null,
  pathname: '/course/list',
  path: '/course/list',
  href: 'http://imooc.com/course/list' }

将路径解析成一个对象,包含了端口号、主机名等等信息。

- url.parse()的第二个参数会将query解析成一个对象,如:

> url.parse('http://imooc.com:8080/course/list?from=scott&course=node#floor1',true)
Url {
  protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'imooc.com:8080',
  port: '8080',
  hostname: 'imooc.com',
  hash: '#floor1',
  search: '?from=scott&course=node',
  query: { from: 'scott', course: 'node' },
  pathname: '/course/list',
  path: '/course/list?from=scott&course=node',
  href: 'http://imooc.com:8080/course/list?from=scott&course=node#floor1' }

对比可以发现,当第二个参数设置为true时,会将url中的query解析成一个对象。

- url.parse()的第三个参数可以解析一个不确定协议的url请求

> url.parse('//imooc.com/course/list',true,true)
Url {
  protocol: null,
  slashes: true,
  auth: null,
  host: 'imooc.com',
  port: null,
  hostname: 'imooc.com',
  hash: null,
  search: '',
  query: {},
  pathname: '/course/list',
  path: '/course/list',
  href: '//imooc.com/course/list' }

设置第三个参数true的时候,能够解析不带协议的url请求,如果不设置第三个参数(默认为false)效果又是怎样的呢?看下面的代码:

> url.parse('//imooc.com/course/list',true)
Url {
  protocol: null,
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: '',
  query: {},
  pathname: '//imooc.com/course/list',
  path: '//imooc.com/course/list',
  href: '//imooc.com/course/list' }

对比上面,发现无法识别host、hostname。

 

2.url.format():格式化一个url对象。

例如:

> url.format({
...   protocol: 'http:',
...   slashes: true,
...   auth: null,
...   host: 'imooc.com:8080',
...   port: '8080',
...   hostname: 'imooc.com',
...   hash: '#floor1',
...   search: '?from=scott&course=node',
...   query: 'from=scott&course=node',
...   pathname: '/course/list',
...   path: '/course/list?from=scott&course=node',
...   href: 'http://imooc.com:8080/course/list?from=scott&course=node#floor1' })
'http://imooc.com:8080/course/list?from=scott&course=node#floor1'

能够输出完整的url路径。

 

3.url.resolve():为url插入或替换原有的标签。

接收两个参数,第一个是源地址,第二个是需要添加或者替换的标签。例如:

> url.resolve('http://imooc.com/','course/list')
'http://imooc.com/course/list'

 

posted @ 2016-07-12 21:04  -cyber  阅读(139)  评论(0编辑  收藏  举报