<center>Node.Js url模块详解</center>

URL的几种处理数据的方法:

  1. url.parse( )
  2. url.format( )
  3. url.resolve( )

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

参数:urlString指传入一个url地址的字符串

第二个参数(可省)传入一个布尔值,默认为false,为true时,返回的url对象中,query的属性为一个对象。

第三个参数(可省)传入一个布尔值,默认为false,为true时,额,我也不知道有什么不同,可以去看看API。
将url字符串转换成object对象

url.parse()可以将一个完整的URL地址,分为很多部分,常用的有:host、port、pathname、path、query。

实例1,仅指定url字符解析成对象

var url=require('url');
var url1='http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two';
var result=url.parse(url1);
// { protocol: 'http:',    //使用协议
//   slashes: true,        //
//   auth: null,		   // 验证信息
//   host: 'calc.gongjuji.net', //全小写的主机部分的URL,包括端口信息。
//   port: null,				//端口
//   hostname: 'calc.gongjuji.net',//小写的主机部分的主机
//   hash: '#one#two',			   //页面锚点参数部分
//   search: '?name=zhangsan&age=18',//查询参数部分,带?
//   query: 'name=zhangsan&age=18',  //查询参数部分
//   pathname: '/byte/',			 //目录部分
//   path: '/byte/?name=zhangsan&age=18',//目录+参数部分
//   href: 'http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two'  //最初解析的完整的网址。双方的协议和主机是小写。
// }

实例2 ,指定是否解析参数部分成对象

//参数解析
var result2=url.parse(url1,true);
// { protocol: 'http:',
//   slashes: true,
//   auth: null,
//   host: 'calc.gongjuji.net',
//   port: null,
//   hostname: 'calc.gongjuji.net',
//   hash: '#one#two',
//   search: '?name=zhangsan&age=18',
//   query: { name: 'zhangsan', age: '18' }, //页面参数部分,已经解析成对象了
//   pathname: '/byte/',
//   path: '/byte/?name=zhangsan&age=18',
//   href: 'http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two' }
//console.info(result2);

实例3,主机特殊解析

//双斜线表示主机
var url2='//www.gongjuji.net/byte/?name=zhangsan#one';
// { protocol: null,
//   slashes: true,
//   auth: null,
//   host: 'www.gongjuji.net',
//   port: null,
//   hostname: 'www.gongjuji.net',
//   hash: '#one',
//   search: '?name=zhangsan',
//   query: { name: 'zhangsan' },
//   pathname: '/byte/',
//   path: '/byte/?name=zhangsan',
//   href: '//www.gongjuji.net/byte/?name=zhangsan#one' }
var result3=url.parse(url2,true,true);
console.info(result3);

2.url.format(urlObj) 将json对象格式化成字符串

var url=require('url');
var obj1={ protocol: 'http:',    
  slashes: true,       
  auth: null,		  
  host: 'calc.gongjuji.net', 
  port: null,				
  hostname: 'calc.gongjuji.net',
  hash: '#one#two',			   
  search: '?name=zhangsan&age=18',
  query: 'name=zhangsan&age=18',  
  pathname: '/byte/',			 
  path: '/byte/?name=zhangsan&age=18',
  href: 'http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two' 
};
var url1=url.format(obj1);
console.log(url1);//http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two
//请求参数为为json对象
var obj2={ protocol: 'http:',
slashes: true,
auth: null,
host: 'calc.gongjuji.net',
port: null,
hostname: 'calc.gongjuji.net',
hash: '#one#two',
search: '?name=zhangsan&age=18',
query: { name: 'zhangsan', age: '18' }, //页面参数部分,已经解析成对象了
pathname: '/byte/',
path: '/byte/?name=zhangsan&age=18',
href: 'http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two' };
var url2=url.format(obj2);
console.log(url2); //http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two
//缺少参数的情况
var obj3={ protocol: null,
slashes: true,
auth: null,
host: 'www.gongjuji.net',
port: null,
hostname: 'www.gongjuji.net',
hash: '#one',
search: '?name=zhangsan',
query: { name: 'zhangsan' },
pathname: '/byte/',
path: '/byte/?name=zhangsan',
href: '//www.gongjuji.net/byte/?name=zhangsan#one' };
var url3=url.format(obj3);
console.log(url3);//www.gongjuji.net/byte/?name=zhangsan#one

3.url.resolve(from, to)
返回从根目录指定到当前目录的绝对路径url

url.resolve( )在url插入或替换原有标签
1.返回结果去除了参数和锚点

2.返回结果标准url路径格式

var url=require('url');
//指定相对路径
var url1=url.resolve('http://www.gongjuji.net/one/two/three','four');
console.log(url1); //http://www.gongjuji.net/one/two/four
//指定根目录的相对路径
var url3=url.resolve('http://www.gongjuji.net/one/two/three','/four');
console.log(url3); //http://www.gongjuji.net/four
//带参数的相对路径
var url2=url.resolve('http://www.gongjuji.net/one/two/three?name=zhangsan','four');
console.log(url2); //http://www.gongjuji.net/one/two/four
//非标准分隔符的原路径
var url4=url.resolve('http://www.gongjuji.net\\one#name1','/four');
console.log(url4);//http://www.gongjuji.net/four
//非标准分隔符的相对路径
var url5=url.resolve('http://www.gongjuji.net/one','\\two\\three');
console.log(url5);//http://www.gongjuji.net/two/three
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值