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 相关文章推荐
Ubuntu中搭建Nodejs开发环境过程分享
Jun 01 NodeJs
Nodejs实现多人同时在线移动鼠标的小游戏分享
Dec 06 NodeJs
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
Jan 01 NodeJs
NodeJS中的MongoDB快速入门详细教程
Nov 11 NodeJs
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
Nov 21 NodeJs
详解nodejs爬虫程序解决gbk等中文编码问题
Apr 06 NodeJs
nodejs个人博客开发第七步 后台登陆
Apr 12 NodeJs
手把手教你把nodejs部署到linux上跑出hello world
Jun 19 NodeJs
Nodejs之http的表单提交
Jul 07 NodeJs
基于nodejs实现微信支付功能
Dec 20 NodeJs
NodeJs实现简单的爬虫功能案例分析
Dec 05 NodeJs
Nodejs异步流程框架async的方法
Jun 07 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
linux下编译安装memcached服务
2014/08/03 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
Smarty日期时间操作方法示例
2016/11/15 PHP
YII分模块加载路由的实现方法
2018/10/01 PHP
PHP中md5()函数的用法讲解
2019/03/30 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
2019/10/09 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
测试你的JS的掌握程度的代码
2009/12/09 Javascript
不同Jquery版本引发的问题解决
2013/10/14 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
2017/07/27 Javascript
vue.js实现的幻灯片功能示例
2019/01/18 Javascript
用webpack4开发小程序的实现方法
2019/06/04 Javascript
微信小程序页面滚动到指定位置代码实例
2019/09/07 Javascript
Python语言实现机器学习的K-近邻算法
2015/06/11 Python
Python AES加密模块用法分析
2017/05/22 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
使用Python文件读写,自定义分隔符(custom delimiter)
2020/07/05 Python
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
2018/01/10 HTML / CSS
美国网上眼镜商城:Zenni Optical
2016/11/20 全球购物
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
雷朋巴西官方商店:Ray-Ban Brasil
2020/07/21 全球购物
若干个Java基础面试题
2015/05/19 面试题
中学教师教育感言
2014/02/21 职场文书
法律系毕业生求职信
2014/05/28 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
护理见习报告范文
2014/11/03 职场文书
关于学习的决心书
2015/02/05 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python
《总之就是很可爱》新作短篇动画《总之就是很可爱~制服~》将于2022年夏天播出
2022/04/07 日漫
MySQL分区路径子分区再分区
2022/04/13 MySQL