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调用cmd命令实现复制目录
May 04 NodeJs
nodejs 中模拟实现 emmiter 自定义事件
Feb 22 NodeJs
nodejs的HTML分析利器node-jquery用法浅析
Nov 08 NodeJs
CentOS 安装NodeJS V8.0.0的方法
Jun 15 NodeJs
Nodejs之TCP服务端与客户端聊天程序详解
Jul 07 NodeJs
nodejs+mongodb+vue前后台配置ueditor的示例代码
Jan 02 NodeJs
nodejs结合socket.io实现websocket通信功能的方法
Jan 12 NodeJs
nodejs爬虫初试superagent和cheerio
Mar 05 NodeJs
修改Nodejs内置的npm默认配置路径方法
May 13 NodeJs
Linux Centos7.2下安装nodejs&amp;npm配置全局路径的教程
May 15 NodeJs
nodejs之koa2请求示例(GET,POST)
Aug 07 NodeJs
Node.js实现爬取网站图片的示例代码
Apr 04 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
实用函数7
2007/11/08 PHP
php与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
PHP数组 为文章加关键字连接 文章内容自动加链接
2011/12/29 PHP
得到文本框选中的文字,动态插入文字的js代码
2007/03/07 Javascript
jquery操作select详解(取值,设置选中)
2014/02/07 Javascript
jQuery中insertAfter()方法用法实例
2015/01/08 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
js实现百度登录框鼠标拖拽效果
2017/03/07 Javascript
javascript+css3开发打气球小游戏完整代码
2017/11/28 Javascript
Vuejs 单文件组件实例详解
2018/02/09 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
Python遍历指定文件及文件夹的方法
2015/05/09 Python
python 链接和操作 memcache方法
2017/03/04 Python
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
详解django三种文件下载方式
2018/04/06 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
在python里从协程返回一个值的示例
2019/02/19 Python
python使用selenium实现批量文件下载
2019/03/11 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
python内存管理机制原理详解
2019/08/12 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
Html5新增标签与样式及让元素水平垂直居中
2019/07/11 HTML / CSS
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
地球上最先进的胡子和头发修剪器:Bevel
2018/01/23 全球购物
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
英文求职信写作小建议
2014/02/16 职场文书
服装采购员岗位职责
2014/03/15 职场文书
市场策划求职信
2014/08/07 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
董事长助理岗位职责
2015/02/11 职场文书
消防演习感想
2015/08/10 职场文书
MySQL优化常用的19种有效方法(推荐!)
2022/03/17 MySQL