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的前后端分离的思考与实践(四)安全问题解决方案
Sep 26 NodeJs
Windows系统中安装nodejs图文教程
Feb 28 NodeJs
NodeJS中的MongoDB快速入门详细教程
Nov 11 NodeJs
Nodejs下DNS缓存问题浅析
Nov 16 NodeJs
浅谈Nodejs中的作用域问题
Dec 26 NodeJs
详解NodeJs支付宝移动支付签名及验签
Jan 06 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
详解Nodejs之npm&amp;package.json
Jun 15 NodeJs
Nodejs实现多房间简易聊天室功能
Jun 20 NodeJs
Nodejs之TCP服务端与客户端聊天程序详解
Jul 07 NodeJs
利用nodeJs anywhere搭建本地服务器环境的方法
May 12 NodeJs
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
Dec 06 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之变量、常量学习笔记
2008/03/27 PHP
php 三维饼图的实现代码
2008/09/28 PHP
PHP通过header实现文本文件下载的代码
2010/08/08 PHP
php类中private属性继承问题分析
2012/11/01 PHP
php采用session实现防止页面重复刷新
2015/12/24 PHP
PHP实现生成带背景的图形验证码功能
2016/10/03 PHP
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
javascript中验证大写字母、数字和中文
2014/01/15 Javascript
利用浏览器全屏api实现js全屏
2014/01/16 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
Angular.js中数组操作的方法教程
2017/07/31 Javascript
微信小程序简单实现form表单获取输入数据功能示例
2017/11/30 Javascript
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
微信小程序解析富文本过程详解
2019/07/13 Javascript
Vue.use()在new Vue() 之前使用的原因浅析
2019/08/26 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
Python字符串切片操作知识详解
2016/03/28 Python
python 判断三个数字中的最大值实例代码
2019/07/24 Python
Django User 模块之 AbstractUser 扩展详解
2020/03/11 Python
如何使用python自带IDLE的几种方法
2020/10/10 Python
css3 background属性调整增强介绍
2010/12/18 HTML / CSS
医疗保健专业人士购物网站:Scrubs & Beyond
2017/02/08 全球购物
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
怎样在程序里获得一个空指针
2015/01/24 面试题
50道外企软件测试面试题
2014/08/18 面试题
中专自荐信
2013/10/13 职场文书
兰兰过桥教学反思
2014/02/08 职场文书
学习十八大演讲稿
2014/09/15 职场文书
置业顾问岗位职责
2015/02/09 职场文书
党员公开承诺书2016
2016/03/24 职场文书
2020年元旦祝福语录,总有适合你的
2019/12/31 职场文书
vue中三级导航的菜单权限控制
2021/03/31 Vue.js