nodejs入门教程四:URL相关模块用法分析


Posted in NodeJs onApril 24, 2017

本文实例讲述了nodejs入门教程之URL相关模块用法。分享给大家供大家参考,具体如下:

1.URL 模块:用于 URL 处理与解析

1)URI 与 URL :

URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。
URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate(定位)这个资源。

2)URL模块中的方法:

url.format(urlObject):将一个 url 对象转为一个 url字符串

url.parse(urlString,[Boolean],[Boolean]):将 url 字符串地址转为一个对象

第一个Boolean

true:则 query 属性总会通过 querystring 模块的 parse() 方法生成一个对象。
false:则返回的 URL 对象上的 query 属性会是一个未解析、未解码的字符串。
默认为 false

第二个Boolean

true:则 // 之后至下一个 / 之前的字符串会被解析作为 host。
例如,//foo/bar 会被解析为 {host: 'foo', pathname: '/bar'}
而不是 {pathname: '//foo/bar'}。
默认为 false

url.resolve(from,to):以一种 Web 浏览器解析超链接的方式把一个目标 URL 解析成相对于一个基础 URL。

var url = require('url');
var urlObject = url.parse('https://hao.360.cn/?src=lm&ls=n6624339d99');
console.log(urlObject);
var urlString = url.format({
  protocol: 'https:',
  slashes: true,
  auth: null,
  host: 'hao.360.cn',
  port: null,
  hostname: 'hao.360.cn',
  hash: null,
  search: '?src=lm&ls=n6624339d99',
  query: 'src=lm&ls=n6624339d99',
  pathname: '/',
  path: '/?src=lm&ls=n6624339d99',
  href: 'https://hao.360.cn/?src=lm&ls=n6624339d99' })
console.log(urlString);

结果:

Url {
 protocol: 'https:',
 slashes: true,
 auth: null,
 host: 'hao.360.cn',
 port: null,
 hostname: 'hao.360.cn',
 hash: null,
 search: '?src=lm&ls=n6624339d99',
 query: 'src=lm&ls=n6624339d99',
 pathname: '/',
 path: '/?src=lm&ls=n6624339d99',
 href: 'https://hao.360.cn/?src=lm&ls=n6624339d99' }
https://hao.360.cn/?src=lm&ls=n6624339d99
var urlString2 = url.resolve('https://hao.360.cn/','?src=lm&ls=n6624339d99')
console.log(urlString) //https://hao.360.cn/?src=lm&ls=n6624339d99

2. querystring 模块:用于解析与格式化 URL 查询字符串

应用:针对于大量的参数传递的场景

querystring.escape(str):对给定的 str 执行 URL 百分号编码(转译)。

querystring.unescape(str):对给定的 str 上的 URL 百分号编码的字符执行解码(反转译)。

querystring.parse(str,[sep,[eq,[options]]]):方法能把一个 URL 查询字符串(str)解析成一个键值对的集合。

•str <String> 要解析的 URL 查询字符串。
•sep <String> 用于界定查询字符串中的键值对的子字符串。默认为 '&'。
•eq <String> 用于界定查询字符串中的键与值的子字符串。默认为 '='。
•options <Object>
•decodeURIComponent <Function> 当解码查询字符串中百分号编码的字符时使用的函数。默认 querystring.unescape()。
•maxKeys <number> 指定要解析的键的最大数量。默认为 1000。指定为 0 则移除键数的限制

④  querystring.stringify(obj[, sep[, eq[, options]]]):通过遍历对象的自有属性,从一个给定的 obj 产生一个 URL 查询字符串。

•obj <Object> 要序列化成一个 URL 查询字符串的对象。
•sep <String> 用于界定查询字符串中的键值对的子字符串。默认为 '&'。
•eq <String> 用于界定查询字符串中的键与值的子字符串。默认为 '='。
•options
•encodeURIComponent <Function> 当把对 URL 不安全的字符转换成查询字符串中的百分号编码时使用的函数。

默认为 querystring.escape()

var querystring = require('querystring');
var a = querystring.parse('src=lm&ls=n6624339d99');
console.log(a)  // { src: 'lm', ls: 'n6624339d99' }

3. http:计算机之间遵循的协议

nodejs入门教程四:URL相关模块用法分析

希望本文所述对大家nodejs程序设计有所帮助。

NodeJs 相关文章推荐
nodejs实用示例 缩址还原
Dec 28 NodeJs
nodejs win7下安装方法
May 24 NodeJs
NodeJS学习笔记之MongoDB模块
Jan 13 NodeJs
nodejs读写json文件的简单方法(必看)
Mar 09 NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 NodeJs
nodejs个人博客开发第五步 分配数据
Apr 12 NodeJs
用Nodejs搭建服务器访问html、css、JS等静态资源文件
Apr 28 NodeJs
nodejs使用http模块发送get与post请求的方法示例
Jan 08 NodeJs
详解nodeJs文件系统(fs)与流(stream)
Jan 24 NodeJs
nodejs基础之多进程实例详解
Dec 27 NodeJs
nodejs微信开发之授权登录+获取用户信息
Mar 17 NodeJs
用Nodejs实现在终端中炒股的实现
Oct 18 NodeJs
nodejs入门教程三:调用内部和外部方法示例
Apr 24 #NodeJs
nodejs入门教程二:创建一个简单应用示例
Apr 24 #NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 #NodeJs
nodejs 终端打印进度条实例代码
Apr 22 #NodeJs
详解如何在NodeJS项目中优雅的使用ES6
Apr 22 #NodeJs
nodejs和C语言插入mysql数据库乱码问题的解决方法
Apr 14 #NodeJs
解析NodeJS异步I/O的实现
Apr 13 #NodeJs
You might like
星际争霸任务指南——虫族
2020/03/04 星际争霸
php下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
PHP中new static()与new self()的区别异同分析
2014/08/22 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
PHP面向对象之后期静态绑定功能介绍
2015/05/18 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
基于jQuery实现左右div自适应高度完全相同的代码
2012/08/09 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
jquery如何实现锚点链接之间的平滑滚动
2013/12/02 Javascript
jQuery写fadeTo示例代码
2014/02/21 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
jQuery实现的页面详情展开收起功能示例
2018/06/11 jQuery
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
js实现简单进度条效果
2020/03/25 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
[01:24:16]2018DOTA2亚洲邀请赛 4.6 全明星赛
2018/04/10 DOTA
详解Python的Django框架中的模版相关知识
2015/07/15 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
解决Pycharm无法import自己安装的第三方module问题
2018/05/18 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
python中安装django模块的方法
2020/03/12 Python
django ORM之values和annotate使用详解
2020/05/19 Python
英国领先的在线高尔夫商店:Scottsdale Golf
2019/08/26 全球购物
工作自我评价怎么写
2014/01/29 职场文书
司仪主持词两篇
2014/03/22 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
毕业典礼致辞
2015/07/29 职场文书
SpringBoot Http远程调用的方法
2022/08/14 Java/Android