引入 url:
   const url = require("url");

用于URL解析、处理等操作的解决方案

1.url.parse(urlStr[, parseQueryString][, slashesDenoteHost])

将url字符串转换成object对象

/**
 * urlStr:需要处理的url字符串
 * parseQueryString: 是否将查询参数也解析成对象
 *   为true时将使用查询模块分析查询字符串,默认为false
 * slashesDenoteHost: 解析主机处理,双斜线表示主机
 *  默认为false,//foo/bar 形式的字符串将被解释成 { pathname: ‘//foo/bar' }
 *  如果设置成true,//foo/bar 形式的字符串将被解释成  { host: ‘foo', pathname: ‘/bar' }
 */

实例1,仅指定url字符解析成对象

var url=require('url');
var url1='http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two';
var result=url.parse(url1);
{
protocol: 'http:', //使用协议
slashes: true, //
auth: null, // 验证信息
host: 'calc.gongjuji.net', //全小写的主机部分的URL,包括端口信息。
port: null, //端口
hostname: 'calc.gongjuji.net',//小写的主机部分的主机
hash: '#one#two', //页面锚点参数部分
search: '?name=zhangsan&age=18',//查询参数部分,带?
query: 'name=zhangsan&age=18', //查询参数部分
pathname: '/byte/', //目录部分
path: '/byte/?name=zhangsan&age=18',//目录+参数部分
href: 'http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two' //最初解析的完整的网址。双方的协议和主机是小写。
}

实例2 ,指定是否解析参数部分成对象

//参数解析
var result2=url.parse(url1,true);
{ protocol: 'http:',
slashes: true,
auth: null,
host: 'calc.gongjuji.net',
port: null,
hostname: 'calc.gongjuji.net',
hash: '#one#two',
search: '?name=zhangsan&age=18',
query: { name: 'zhangsan', age: '18' }, //页面参数部分,已经解析成对象了
pathname: '/byte/',
path: '/byte/?name=zhangsan&age=18',
href: 'http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two' }

实例3,主机特殊解析

//双斜线表示主机
var url2='//www.gongjuji.net/byte/?name=zhangsan#one';
{
protocol: null,
slashes: true,
auth: null,
host: 'www.gongjuji.net',
port: null,
hostname: 'www.gongjuji.net',
hash: '#one',
search: '?name=zhangsan',
query: { name: 'zhangsan' },
pathname: '/byte/',
path: '/byte/?name=zhangsan',
href: '//www.gongjuji.net/byte/?name=zhangsan#one'
}
var result3=url.parse(url2,true,true);
console.info(result3);

2.url.format(urlObj)  将json对象格式化成字符串

var url=require('url');
var obj1={
protocol: 'http:',
slashes: true,
auth: null,
host: 'calc.gongjuji.net',
port: null,
hostname: 'calc.gongjuji.net',
hash: '#one#two',
search: '?name=zhangsan&age=18',
query: 'name=zhangsan&age=18',
pathname: '/byte/',
path: '/byte/?name=zhangsan&age=18',
href: 'http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two'
};
var url1=url.format(obj1);
console.log(url1);//http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two //请求参数为为json对象
var obj2={
protocol: 'http:',
slashes: true,
auth: null,
host: 'calc.gongjuji.net',
port: null,
hostname: 'calc.gongjuji.net',
hash: '#one#two',
search: '?name=zhangsan&age=18',
query: { name: 'zhangsan', age: '18' }, //页面参数部分,已经解析成对象了
pathname: '/byte/',
path: '/byte/?name=zhangsan&age=18',
href: 'http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two'
}; var url2=url.format(obj2);
console.log(url2); //http://calc.gongjuji.net/byte/?name=zhangsan&age=18#one#two //缺少参数的情况
var obj3={
protocol: null,
slashes: true,
auth: null,
host: 'www.gongjuji.net',
port: null,
hostname: 'www.gongjuji.net',
hash: '#one',
search: '?name=zhangsan',
query: { name: 'zhangsan' },
pathname: '/byte/',
path: '/byte/?name=zhangsan',
href: '//www.gongjuji.net/byte/?name=zhangsan#one' }; var url3=url.format(obj3);
console.log(url3);//www.gongjuji.net/byte/?name=zhangsan#one

3.url.resolve(from, to)  

返回从根目录指定到当前目录的绝对路径url
1.返回结果去除了参数和锚点
2.返回结果标准url路径格式

var url=require('url'); 

//指定相对路径
var url1=url.resolve('http://www.gongjuji.net/one/two/three','four');
console.log(url1); //http://www.gongjuji.net/one/two/four //指定根目录的相对路径
var url3=url.resolve('http://www.gongjuji.net/one/two/three','/four');
console.log(url3); //http://www.gongjuji.net/four //带参数的相对路径
var url2=url.resolve('http://www.gongjuji.net/one/two/three?name=zhangsan','four');
console.log(url2); //http://www.gongjuji.net/one/two/four //非标准分隔符的原路径
var url4=url.resolve('http://www.gongjuji.net\\one#name1','/four');
console.log(url4);//http://www.gongjuji.net/four //非标准分隔符的相对路径
var url5=url.resolve('http://www.gongjuji.net/one','\\two\\three');
console.log(url5);//http://www.gongjuji.net/two/three

 

Node 系列之url模块的更多相关文章

  1. node中的url模块解析结果

    1. URL模块作用: url 模块用于处理与解析 URL. 使用方法如下: const url = require('url'); 2. URL 字符串与 URL 对象 URL 字符串是结构化的字符 ...

  2. node.js 的url模块

    var URL = require('url');  var testUrl = "http://www.baidu.com:8080/index.php?content=abc" ...

  3. Node 系列之path模块

    //引用该模块 var path = require("path"); 1.路径解析,得到规范化的路径格式 //对window系统,目录分隔为'\', 对于UNIX系统,分隔符为' ...

  4. Node.js的url模块简介

    什么是URL URL是Uniform Location Resource的缩写,翻译为“统一资源定位符”,也就是描述资源位置的固定表示方法.被URL描述的资源可以位于互联网上,也可以位于本地. URL ...

  5. node(03)--利用 HTTP 模块 URl 模块 PATH 模块 FS 模块创建一个 WEB 服务器

    Web 服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等 Web 客户端提供文档,也可以放置网站文件,让全世界浏览:可以放置数据文件,让全世界下载.目前最主流的三个 We ...

  6. node.js (01http 模块 url 模块)

    // 引入 http 模块-->Node.js 中的很多功能都是通过模块实现. var http = require('http'); // http.createServer() 方法创建服务 ...

  7. Node.js学习笔记(一) --- HTTP 模块、URL 模块、supervisor 工具

    一.Node.js创建第一个应用 如果我们使用 PHP 来编写后端的代码时,需要 Apache 或者 Nginx 的 HTTP 服务器, 来处理客户端的请求相应.不过对 Node.js 来说,概念完全 ...

  8. node.js当中的http模块与url模块的简单介绍

    一.http模块的简单介绍 node.js当中的http内置模块可以用于创建http服务器与http客户端. 1.引包 const http = require('http'); 2.创建http服务 ...

  9. node.js HTTP模块、URL 模块

    在浏览器输入存在的网址的一个交互过程 1.用户通过浏览器发送一个http的请求到指定的主机 2.服务器接收到该请求,对该请求进行分析和处理 3.服务器处理完成以后,返回对应的数据到用户机器 4.浏览器 ...

随机推荐

  1. DMA与cache一致性的问题

    Cache和DMA本身似乎是两个毫不相关的事物.Cache被用作CPU针对内存的缓存利用程序的空间局部性和时间局部性原理,达到较高的命中率,从而避免CPU每次都必须要与相对慢速的内存交互数据来提高数据 ...

  2. Cockpit subscriptions on CentOS 7 - This system is not registered with an entitlement server. You can use subscription-manager to register.

    下午安装 cockpit 时,使用 yum 工具的时候哦,出现如下信息: This system is not registered with an entitlement server. You c ...

  3. VsCode 的使用

    一.简介 VsCode(Visual Studio Code),官网地址:https://code.visualstudio.com/ Visual Studio Code is a lightwei ...

  4. Win10系统电脑桌面图标没有了怎么办

    win10系统相对来说还是有些不稳定的,有时候打开电脑会发现,桌面上的图标不见了,遇见这种情况,先别着急,可以使用两种很简单的方法来解决. 方法一: 在桌面上右键,点击查看,看“显示桌面图标”这一项前 ...

  5. Python3编写网络爬虫07-基本解析库pyquery的使用

    三.pyquery 简介:同样是一个强大的网页解析工具 它提供了和jQuery类似的语法来解析HTML文档,支持CSS选择器,使用非常方便 安装: pip install pyquery 验证: im ...

  6. system函数的应用

    system函数的两个简单应用 1.调用cmd命令.例:(打开计算器) #include <stdlib.h> int main() { system("calc"); ...

  7. hadoop系列 第三坑: Task process exit with nonzero status of 137

    跑MR的时候抛出异常: java.lang.Throwable: Child Error at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.j ...

  8. 【BZOJ3622】已经没有什么好害怕的了

    Description 已经使 Modoka 有签订契约, 和自己一起战斗的想法后 , Mami 忽然感到自己不再是孤单一人了呢. 于是, 之前的谨慎的战斗作风也消失了 , 在对 Charlotte ...

  9. Java链式方法

    http://blog.csdn.net/lemon_shenzhen/article/details/6358537 有两种情况可运用链式方法: 第一种  除最后一个方法外,每个方法都返回一个对象 ...

  10. Android清理设备内存具体完整演示样例(二)

    版权声明: https://blog.csdn.net/lfdfhl/article/details/27672913 MainActivity例如以下: package cc.c; import j ...