前提给大家声明一下,我操作的环境是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. 使用Proj库进行大地坐标转空间坐标、投影坐标的一个示例

    最近研究了proj库的使用,自己写了一个小demo,仅供参考. void demoPROJ() { const char* wgs84 = "+proj=tmerc +ellps=WGS84 ...

  2. [LeetCode] Paint House II 粉刷房子之二

    There are a row of n houses, each house can be painted with one of the k colors. The cost of paintin ...

  3. 华为5G空口新技术(2015年)

    2015-03-24 长江后浪推前浪,4G建设方兴未艾,业界关于5G的讨论已如火如荼.对于每一代移动通信,空口技术都相当于王冠上的明珠. 在月初的世界移动通信大会上,华为发布了面向5G的新空口,并展出 ...

  4. NodeJs入门学习(一)

    NodeJs是针对前端工程师向web后端深入理解的一门很好的语言. 首先,记录NodeJS几大特性,后续补充: 一.Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高. ...

  5. SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问

    delphi ado 跨数据库访问 语句如下 ' and db = '帐套1' 报错内容是:SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATE ...

  6. 两种遍历list

    li=[[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]s=0for i in range(0,5): for j in ran ...

  7. jQuery进阶

    复习: jq无论如何都是一个集合 jq是一个包装集 var arr=$("div").get( )会将所有的DOM对象转换成真正的数组, get( )里边没传参数 兄弟元素: 只要 ...

  8. 北京培训记day3

    网络流 一.基础知识点: [容量网络] 图G(V,E)为有向网络,在V中指定一个源点和一个汇点,流量从源点出发经过有向网络流向汇点.对于每一条有向边有权值C,称作弧的容量.有向边称为弧.这样的有向网络 ...

  9. UVA1225

    每增加1个整数,所有位上的对应数都加一.建立一个10000列10行的表,然后查表就可以了. #include<stdio.h> #include<string.h> ][]; ...

  10. jQuery文本框中的事件应用

    jQuery文本框中的事件应用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...