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 相关文章推荐
golang、python、php、c++、c、java、Nodejs性能对比
Mar 12 NodeJs
详解Nodejs基于mongoose模块的增删改查的操作
Dec 21 NodeJs
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
Jan 12 NodeJs
nodejs获取微信小程序带参数二维码实现代码
Apr 12 NodeJs
详解nodejs异步I/O和事件循环
Jun 07 NodeJs
nodejs开发微信小程序实现密码加密
Jul 11 NodeJs
NodeJs form-data格式传输文件的方法
Dec 13 NodeJs
nodejs 最新版安装npm 的使用详解
Jan 18 NodeJs
nodejs微信扫码支付功能实现
Feb 17 NodeJs
nodejs基础之多进程实例详解
Dec 27 NodeJs
nodejs检测因特网是否断开的解决方案
Apr 17 NodeJs
nodejs如何在package.json中设置多条启动命令
Mar 16 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
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
php类中的各种拦截器用法分析
2014/11/03 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
2017/09/30 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
浅谈laravel orm 中的一对多关系 hasMany
2019/10/21 PHP
JQuery Study Notes 学习笔记(一)
2010/08/04 Javascript
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
javascript基本类型详解
2014/11/28 Javascript
prototype框架中美元符号$用法分析
2016/01/22 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
angularjs ocLazyLoad分步加载js文件实例
2017/01/17 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
vue-router路由参数刷新消失的问题解决方法
2017/06/17 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
Vue安装浏览器开发工具的步骤详解
2019/05/12 Javascript
react实现复选框全选和反选组件效果
2020/08/25 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
vue 数据双向绑定的实现方法
2021/03/04 Vue.js
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
python调用tcpdump抓包过滤的方法
2018/07/18 Python
Python基础学习之函数方法实例详解
2019/06/18 Python
Python合并2个字典成1个新字典的方法(9种)
2019/12/19 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
python isinstance函数用法详解
2020/02/13 Python
python,Java,JavaScript实现indexOf
2020/09/09 Python
Python中Yield的基本用法
2020/10/18 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
授权委托书(完整版)
2014/09/10 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
Redis Cluster 集群搭建你会吗
2021/08/04 Redis