前提给大家声明一下,我操作的环境是Mac终端下操作的.(前提是你先要下载好node.js)

  说道URL 恐怕都不陌生,但是要说URL,就 必须先说下URI

  URI是统一资源标识符,是一个用于标识某一互联网资源名称的字符串。由是三个组成部分:访问资源的命名机制、存放资源的主机名、资源自身的名称,由路径表示。

  URL是统一资源定位,是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

  说完URL和URI的区别,我说说我们今天所要将的,如何在终端里,用node.js解析URL.

  在官网上看他有3个可以调用的参数

  1.url.parse(urlStr,[parseQueryStaing],[slashesDencteHost]) // 解析url 把他解析成一个对象

  2.url.format(urlObj) // 把url格式化成一个字符串

  3.url.resolve(form,to) // 也是 解析的 两个参数

  首先,打开终端 输入node 然后输入url 在终端显示就是下面这样的

liuhaosheng:~ xalo$ node
> url
{ parse: [Function: urlParse],
resolve: [Function: urlResolve],
resolveObject: [Function: urlResolveObject],
format: [Function: urlFormat],
Url: [Function: Url] }
>

  下来先介绍  在终端输入 url.parse() 弹出来下面内容

 // url.parse()把url解析成对象
> url.parse('http://www.imooc.com/course/list?c=fe') // 这里面的网址是随便找的
Url {
protocol: 'http:', // 底层使用的协议
slashes: true,   // 是否有协议的双斜线
auth: null,
host: 'www.imooc.com', // http 是服务器的ip地址或者是域名
port: null,       // 端口 默认80
hostname: 'www.imooc.com', // 主机名
hash: null,        // 哈希值 对应的是页面上的瞄点
search: '?c=fe',   // 查询字符串参数
query: 'c=fe',  // 发送给http的数据 等号分割的键值称为参数串 字符串
pathname: '/course/list', // 访问资源的路径名
path: '/course/list?c=fe', // 路径
href: 'http://www.imooc.com/course/list?c=fe' } // 没被解析的完整的超级链接
>

  url.parse()带有两个参数

> url.parse('http://www.imooc.com/course/list?c=fe',true) //第一个参数地址 第二个参数指定说 解析query模块是用什么方法是用queryStr方法(true)
Url {                                // 还是 自带的url方法 (false)
protocol: 'http:',
slashes: true,
auth: null,
host: 'www.imooc.com',
port: null,
hostname: 'www.imooc.com',
hash: null,
search: '?c=fe',
query: { c: 'fe' }, // 变成对象
pathname: '/course/list',
path: '/course/list?c=fe',
href: 'http://www.imooc.com/course/list?c=fe' }
>

  url.parse()三个参数

  

> url.parse('//imooc.com/course/list') // 就是针对不知道请求的地址是什么协议的
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: null,
query: null,
pathname: '//imooc.com/course/list',
path: '//imooc.com/course/list',
href: '//imooc.com/course/list' }
//////////下面是有三个参数的
> 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' }
>

  把刚才通过parse解析 得到的对象放在format里面,看能不能生成标准的url地址

> url.format({ //里面传入一个刚才通过parse解析得到的对象
... protocol: 'http:',
... slashes: true,
... auth: null,
... host: 'www.imooc.com',
... port: null,
... hostname: 'www.imooc.com',
... hash: null,
... search: '?c=fe',
... query: 'c=fe',
... pathname: '/course/list',
... path: '/course/list?c=fe',
... href: 'http://www.imooc.com/course/list?c=fe' })
'http://www.imooc.com/course/list?c=fe' //生成一个完整并且合法的url地址
>

  在终端中输入 url.resolve

> url.resolve('http://www.imooc.com','/course/list?c=fe') //第一个参数是域名,第二个参数是 path 路径
'http://www.imooc.com/course/list?c=fe' // 然后回车就生成一个合法的域名
>

  这就是node.js中的url解析,希望可以帮助到大家.

  

详解Node解析URL网址的更多相关文章

  1. 详解 Node + Redux + MongoDB 实现 Todolist

    前言 为什么要使用 Redux? 组件化的开发思想解放了繁琐低效的 DOM 操作,以 React 来说,一切皆为状态,通过状态可以控制视图的变化,然后随着应用项目的规模的不断扩大和应用功能的不断丰富, ...

  2. 33 Python 详解命令解析 - argparse--更加详细--转载

    https://blog.csdn.net/lis_12/article/details/54618868 Python 详解命令行解析 - argparse Python 详解命令行解析 - arg ...

  3. XML文件详解以及解析

    转自:https://blog.csdn.net/com_ma/article/details/73277535 一.xml基础详解: 1.概述: xml:即可扩展标记语言,xml是互联网数据传输的重 ...

  4. 详解Java解析XML的四种方法

    XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM ...

  5. 【Java】详解Java解析XML的四种方法

    XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML.本文将详细介绍用Java解析XML的四种方法. AD: XML现在已经成为一种通用的数据交换格式,它的平台无关性,语 ...

  6. [转]详解Java解析XML的四种方法

    XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM ...

  7. 18张图,详解SpringBoot解析yml全流程

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 前几天的时候,项目里有一个需求,需要一个开关控制代码中是否执行一段逻辑,于是理所当然的在yml文件中配置了一个属性作为开关,再配合nacos就可 ...

  8. 详解node + mongoDb(mongoDb安装、运行,在node中连接、增删改查)

    一.序言 好久没写博客了,这次主要聊聊 node 和 mongoDb . 先说明一下技术栈  node + express + mongoose + mongoDb.这篇博客,主要讲述 mongoDb ...

  9. Django 详解<二> 之url和view

    Django URL(路由系统) RL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表:你就是以这种方式告诉Django,对 ...

随机推荐

  1. [LeetCode] Best Meeting Point 最佳开会地点

    A group of two or more people wants to meet and minimize the total travel distance. You are given a ...

  2. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(一)

    前言:出于某种原因,需要学习下Knockout.js,这个组件很早前听说过,但一直没尝试使用,这两天学习了下,觉得它真心不错,双向绑定的机制简直太爽了.今天打算结合bootstrapTable和Kno ...

  3. 0104探究MySQL优化器对索引和JOIN顺序的选择

    转自http://www.jb51.net/article/67007.htm,感谢博主 本文通过一个案例来看看MySQL优化器如何选择索引和JOIN顺序.表结构和数据准备参考本文最后部分" ...

  4. [翻译]ES 提案: global

    Jordan Harband 的 ECMAScript 提案“global”现在处于第三阶段.该提案提供了一种新的用于访问全局对象的标准方式. 全局对象的引用 下面是常用的几种引用全局对象的方式: 全 ...

  5. Java学习笔记之JNDI(六)

    JNDI 是什么 JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的 ...

  6. 对于多个数据库表对应一个Model问题的思考

    最近做项目遇到一个场景,就是客户要求为其下属的每一个分支机构建一个表存储相关数据,而这些表的结构都是一样的,只是分属于不同的机构.这个问题抽象一下就是多个数据库表对应一个Model(或者叫实体类).有 ...

  7. 小猪cms命名规则整理

    1.模板命名规则: 类名+函数名称+.html 2.Model命名规则: 数据库表名:cms_user_data 文件名称命名: UserDataModel.class.php <?php cl ...

  8. 练习:python 操作Mysql 实现登录验证 用户权限管理

    python 操作Mysql 实现登录验证 用户权限管理

  9. vim简单使用

    摘自:http://blog.csdn.net/niushuai666/article/details/7275406   一.安装vim   sudo apt-get install vim   二 ...

  10. IIS7.5使用web.config设置伪静态的二种方法

    转自 网上赚钱自学网 .http://www.whosmall.com/post/121 近几天公司里开发的项目有几个运行在IIS7.5上,由于全站采用的是伪静态,因此从网上找到两两种方法来实现.这两 ...