在node运行环境中输入url:

> url
url
{ parse: [Function: urlParse],
resolve: [Function: urlResolve],
resolveObject: [Function: urlResolveObject],
format: [Function: urlFormat],
Url: [Function: Url] }

可以看到有五个方法。

1.url.parse():解析一个路径

例如:

> url.parse('http://imooc.com/course/list')
Url {
protocol: 'http:',
slashes: true,
auth: null,
host: 'imooc.com',
port: null,
hostname: 'imooc.com',
hash: null,
search: null,
query: null,
pathname: '/course/list',
path: '/course/list',
href: 'http://imooc.com/course/list' }

将路径解析成一个对象,包含了端口号、主机名等等信息。

- url.parse()的第二个参数会将query解析成一个对象,如:

> url.parse('http://imooc.com:8080/course/list?from=scott&course=node#floor1',true)
Url {
protocol: 'http:',
slashes: true,
auth: null,
host: 'imooc.com:8080',
port: '8080',
hostname: 'imooc.com',
hash: '#floor1',
search: '?from=scott&course=node',
query: { from: 'scott', course: 'node' },
pathname: '/course/list',
path: '/course/list?from=scott&course=node',
href: 'http://imooc.com:8080/course/list?from=scott&course=node#floor1' }

对比可以发现,当第二个参数设置为true时,会将url中的query解析成一个对象。

- url.parse()的第三个参数可以解析一个不确定协议的url请求:

> url.parse('//imooc.com/course/list',true,true)
Url {
protocol: null,
slashes: true,
auth: null,
host: 'imooc.com',
port: null,
hostname: 'imooc.com',
hash: null,
search: '',
query: {},
pathname: '/course/list',
path: '/course/list',
href: '//imooc.com/course/list' }

设置第三个参数true的时候,能够解析不带协议的url请求,如果不设置第三个参数(默认为false)效果又是怎样的呢?看下面的代码:

> url.parse('//imooc.com/course/list',true)
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: '',
query: {},
pathname: '//imooc.com/course/list',
path: '//imooc.com/course/list',
href: '//imooc.com/course/list' }

对比上面,发现无法识别host、hostname。

2.url.format():格式化一个url对象。

例如:

> url.format({
... protocol: 'http:',
... slashes: true,
... auth: null,
... host: 'imooc.com:8080',
... port: '8080',
... hostname: 'imooc.com',
... hash: '#floor1',
... search: '?from=scott&course=node',
... query: 'from=scott&course=node',
... pathname: '/course/list',
... path: '/course/list?from=scott&course=node',
... href: 'http://imooc.com:8080/course/list?from=scott&course=node#floor1' })
'http://imooc.com:8080/course/list?from=scott&course=node#floor1'

能够输出完整的url路径。

3.url.resolve():为url插入或替换原有的标签。

接收两个参数,第一个是源地址,第二个是需要添加或者替换的标签。例如:

> url.resolve('http://imooc.com/','course/list')
'http://imooc.com/course/list'

Node.js:url的更多相关文章

  1. node.js获取url中的各个参数

    实例代码test.js var http=require('http'); var url=require('url'); var querystring=require('querystring') ...

  2. Node.js:get/post请求、全局对象、工具模块

    一.GET/POST请求 在很多场景中,我们的服务器都需要跟用户的浏览器打交道,如表单提交.表单提交到服务器一般都使用 GET/POST 请求. 1.获取GET请求内容 由于GET请求直接被嵌入在路径 ...

  3. Node.js:GET/POST请求

    ylbtech-Node.js:GET/POST请求 1.返回顶部 1. Node.js GET/POST请求 在很多场景中,我们的服务器都需要跟用户的浏览器打交道,如表单提交. 表单提交到服务器一般 ...

  4. Node.js:path、url、querystring模块

    Path模块 该模块提供了对文件或目录路径处理的方法,使用require('path')引用. 1.获取文件路径最后部分basename 使用basename(path[,ext])方法来获取路径的最 ...

  5. Node.js:实现知乎(www.zhihu.com)模拟登陆,获取用户关注主题

    前一段时间,在瞎看看 Node.js,便研究通过 Node.js 实现知乎模拟登陆.相信,有很多网站有登陆权限设置,如若用户未登陆,将会跳转至首页提醒用户登陆,无法浏览部分页面. 如若是 b/s 架构 ...

  6. Node.js:包

    概要:本篇博客主要介绍了node.js中的包 包是在模块基础上更深一步的抽象,Node.js的包类似于C/C++的库函数或者Java/.Net的类库.它将某个独立的功能封装起来,用于发布.更新.依赖管 ...

  7. Node.js:Express 框架

    Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具.使用 Express 可以快速地搭建一个完整功能的网站 ...

  8. Node.js:Web模块、文件系统

    一.web模块 Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,Web服务器的基本功能就是提供Web信息浏览服务.它只需支持HTTP协议.HTML文档格式及URL,与客户端的网络 ...

  9. Node.js:常用工具、路由

    一.常用工具util util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. 1.util.inherits util.inherit ...

随机推荐

  1. linux面试题集锦《转》

    1. 下面的网络协议中,面向连接的的协议是: A . A 传输控制协议 B 用户数据报协议 C 网际协议 D 网际控制报文协议 2. 在/etc/fstab文件中指定的文件系统加载参数中, D 参数一 ...

  2. ASP.NET MVC Url中带点号出现404错误的解决方案

    由于项目需求,项目的路由设计如下 config.Routes.MapHttpRoute( name: "Get/Put Sku", routeTemplate: "api ...

  3. ssh中的 Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.

    这个错误我整理了  半天才发现问题的存在. 尝试了网上的很多办法,但是最后都没有达到效果. 包括这两种: 第一种: web.xml种的配置 <filter> <filter-name ...

  4. GridControl/GridView的分组操作

    今天在模块编写中碰到了对表格的分组,特意在这里把它记录下来. 一.背景:Dev14.1.3,GridControl,.NET4.0+C# 二.过程 1.GridControl设计 一共添加4列:在下面 ...

  5. THINKCMF-NGINX伪静态

    location / { index index.php index.html index.htm; if (!-e $request_filename) { rewrite ^/index.php( ...

  6. CUDA开发时用到的各种Linux命令

    cat 读取文件中的全部内容. 例:cat cuda_add.cu

  7. Unity3DGUI:常用控件

  8. PHP5.5在windows 安装使用 memcached 服务端的方法以及 php_memcache.dll 下载

    PHP5.5 在windows下安装 memcached 的方法 下载服务端资源 http://download.csdn.net/detail/zsjangel/7104727 下载完成后,解压(我 ...

  9. hibernate_@GeneratedValue

    JPA通用策略生成器  通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id,  其生成规则由@GeneratedValue设定的.这里 ...

  10. C++类的实例化的两种方法

    C++ 类的实例化有两种方法: 直接定义对象: 先定义一个类:   class A { public: A(); virtual ~A(); ... ... };   类实现略. 用的时候: A a; ...