前提给大家声明一下,我操作的环境是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] Add Two Numbers II 两个数字相加之二

    You are given two linked lists representing two non-negative numbers. The most significant digit com ...

  2. [LeetCode] Fraction to Recurring Decimal 分数转循环小数

    Given two integers representing the numerator and denominator of a fraction, return the fraction in ...

  3. @RenderSection,@RenderPage,@RenderBody介绍

    在MVC的模板页中会用到上面三个东西,那么今天就简单归纳下各有什么作用 1.@RenderSection 用法 对CSS或JS部分模块的预留定义 例如模板页定义了@RenderSection(&quo ...

  4. CoreOS和Docker入门

    转载自: http://www.oschina.net/translate/coreos_and_docker_first_steps?cmp CoreOS是一个基于Linux,systemd和Doc ...

  5. 在html中添加script脚本的方法和注意事项

    在html中添加script脚本有两种方法,直接将javascript代码添加到html中与添加外部js文件,这两种方法都比较常用,大家可以根据自己需要自由选择 在html中添加<script& ...

  6. 测试对于list的sort与sorted的效率

    sorted from time import clock from random import randint start = clock() a = [randint(0,1000000) for ...

  7. C# mysql 获取所有表名

    public static List<string> GetAllTableName()        {            List<string> retNameLis ...

  8. 关于delphi7的四舍五入

    round 函数是银行用的 采用了 四舍六入5留偶 网上找到了个实现方法   先乘1000,用Trunc取整,除10取余,余数再取整,如果大于5,进位,小于5不进位. 函数就好写了 现在只写一个保留两 ...

  9. c#委托----我的一点笔记

    public partial class ucBloodLabs { public delegate void ShowBloodEvent(); public ShowBloodEvent Show ...

  10. Java多线程与并发库高级应用-面试题

    第一题:现有的程序代码模拟产生了16个日志对象,并且需要运行16秒才能打印完这些日志,请在程序中增加4个线程去调用parseLog()方法来分头打印这16个日志对象,程序只需要运行4秒即可打印完这些日 ...