接下来进入node的重点,也就是介绍nodejs主要api的功能和如果使用,由于nodejs逐渐能满足这种高并发和大规模的场景。
他才被更多的公司所采用

无论什么资源,一定要有明确的地址才有意义,在互联网里面的具体地址就由url来表示,互联网上的一个图片,一个地址,一首
音乐,都会有一个唯一都一个地址,我们一般通过url来访问到它

说到url,就要提一下uri,经常有人搞不清楚两者的区别,uri是统一资源标识符,url是统一资源定位符,什么意思呢
uri偏重的是标识,url偏重的是定位,比如网址就是url,是一个具体的符号,说明了要通过哪种协议来访问这个资源
uri更抽象一些,是一个字符串格式规范,是一种概念上的定义,事实上呢,url是uri的一个子集,url肯定是uri,但
uri不一定是url,在我们生活中,分分钟都在url,比如去淘宝网,去百度,去优酷,他们的网址肯定是烂熟于心
那url也有一些他的命名规则,一般来说,url只能用英文字母,符号,和阿拉伯数字和某些标点符号,不能使用其他文字和符号
那如果有文字就必须编码,url的编码就是另外一个可以展开的话题了,我们还是直接回到nodejs里面,看看url这个模块
都能干啥

首先,要找到url这个模块的文档,进入官网后,找到url,可以找到很多相应的方法

我们先看这三个方法

他们分别是用来干嘛的呢
parse顾名思义,就是用来解析一个url地址的,url.parse()方法会解析一个url字符串并返回一个url对象
format呢就是将一个url对象转化成一个url字符串
resolve也是用来解析的,只不过它接收两个参数,把两个参数拼接成浏览器可以识别的格式

parse

接下来来命令行里面演示一下,首先是parse
比如这个地址:https://nodejs.org/dist/latest-v10.x/docs/api/url.html
输入

node

进入nodejs的环境,直接打印

url

就能看到一些里面的一些可用的方法,我们输入

铛铛,就能看到url地址被解析成了对象,我们看下标准的url的组成部分,首先是这个
protbcal,它指定的是底层使用的协议是http还是ftp。
auth,URL的用户名与密码部分。该字符串跟在protocol和双斜杠(如果有)的后面,排在 host 部分的前面且被一个 ASCII 的 at 符号(@)分隔
slashes,是否有协议的双斜线
host,表示ip地址 或者 域名
port,端口,默认是80端口,如果是其他端口,就必须指明
hostname,主机名
hash,通常对应的是所谓的锚,页面上某个锚点的那种,加#之后,把页面滚动到当前位置到这种
search,查询字符串参数
query,发送给http服务到一个数据,通常称这个被=分隔到键值称为参数串
pathname,访问资源路径名
path,访问资源路径
href,没被解析的完整的超链接
无论多么复杂的url,只要是合法的,都可以这样被解析

format
接下来看format怎么用,我们刚才通过parse解析后的对象拿到format里面,看能不能生成一个标准的url地址

可以看到已经生成,而且是合法的url地址

resolve
继续来试一下resolve,第一个参数放一个首页地址,后面跟上这个hash,就是这个路径,然后回车得到

一个合法的url地址

这个url模块非常简单,却非常的重要,主要设计到网络到请求的接受,路径参数的处理就能用到它,非常方便到简析出这个url的组成部分
从而识别这个请求类型以及来判断如何来返回数据,它会是学习node url的好帮手,特别是parse真的特别好用

parse可以加入两个参数,来实现不同的目的,接下来演示一下,第一个参数是刚才所构造的带参数的url地址,第二个参数是用来指定,
用来解析这个query这个模块使用queryString这个module还是自身的这个,如果设置成true的话,就会用queryString这个module
默认的值是false

能看到这个query已经被解析成了一个对象,但是search他还是一个string,他没有任何的变化,但query变成一个对象,之前不传true的
query它也是一个字符串,所以这个区别一眼就能够看的很清楚了

我们看这个方法所接收的第三个参数,用来处理这种场景,有些时候我们并不知道这个来源地址是什么协议的,他可能是一个http,也可能
是一个https的,那这个时候我也想取到这里面的路径和这里面的query,那这个时候就不能解析,出错,那这种也可以不写前面的协议,
也通过这种方式去解析,那就通过添加这个第三个参数,他默认是false,如果指定为true的话

可以对比上面的和下面的有什么不同,上面的host为null,就是解析失败,下面的host解析出来就是我们所希望的nodejs.org,另外就是
pathname,上面就整个当成这个路径,下面就是解析正确后的一个希望的路径,所以根据大家的需求来怎么判断传递的这个参数

url网址解析的好帮手的更多相关文章

  1. node.js基础 1之 URL网址解析的好帮手

    URL和URI的区别: URL是统一资源定位符 URI是统一资源标识符 URL是URI的子集(URL一定是URI,但URI不一定是URL) node中的URL中的url.parse protocol: ...

  2. nodejs-url网址解析的好帮手

    HTTP协议中url和uri的区别. 每个url都是uri,但是不是每个uri都是url. URI:是统一资源的标识符,web上可用的每种资源如HTML文档.图像.视频片段.程序等都是一个URI来定位 ...

  3. phpcms V9 MVC模式 与 URL访问解析

    [1]URL访问解析 观察访问网页时的网址,可以得出模块访问方法,如下示例: http://www.abcd.com.cn/phpcms/index.php?m=content&c=index ...

  4. Json文件/网址解析

    // // main.m // OC8-Json文件解析 // // Created by qianfeng on 15/6/23. // Copyright (c) 2015年 qianfeng. ...

  5. phpcms(1)phpcms V9 MVC模式 与 URL访问解析(转)

    [1]URL访问解析 观察访问网页时的网址,可以得出模块访问方法,如下示例: http://www.abcd.com.cn/phpcms/index.php?m=content&c=index ...

  6. Django url配置 正则表达式详解 分组命名匹配 命名URL 别名 和URL反向解析 命名空间模式

    Django基础二之URL路由系统 本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11版本 ...

  7. 巨蟒python全栈开发django4:url反向解析图解&&模板渲染

    第一部分: 1.(1)知识点回顾: django回顾: ()下载安装 输入网址,a,form表单get post,爬虫 (请求)==>django项目服务端的url(r"index/& ...

  8. django的url反向解析

    目的:防止页面中url地址改变,其他与这个URL地址有关联的都要改,减少耦合度 使用:主要分为在html中和视图函数中的使用 HTML中的使用: 如果我们在项目的url文件中通过include导入了应 ...

  9. js获取当前页面的url网址信息小汇总

    在WEB开发中,时常会用到javascript来获取当前页面的url网址信息,在这里是我的一些获取url信息的小总结. 下面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblog ...

随机推荐

  1. jinkens 'python' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

    jinkens执行构建时报错 解决方法,就是指定路径.python的安装目录和被执行文件的的目录

  2. 6 GPath

    1       GPath GPath是Groovy的表达式语言,类似xml的XPath.而二者的不同在于,GPath表达式可以应用于处理POJOs或者处理xml. 例如:a.b.c语句等同于a.ge ...

  3. 信息领域热词分析系统--python过滤

    利用python过滤去没用的词语,过滤的词语存储在停用文件中. #创建停用词表 def stopwordlist(): stopwords=[line.strip() for line in open ...

  4. VMware 无法连接虚拟设备ide1:0,主机上没有相对应的设备,您 要在每次开启此虚拟机时都尝试连接此虚拟设备吗?

    无法连接虚拟设备ide1:0,主机上没有相对应的设备,您 要在每次开启此虚拟机时都尝试连接此虚拟设备吗? 运行VMware,出现以上错误. ide1:0一般是虚拟机的光驱,配置默认选项是“使用物理驱动 ...

  5. Silverlight 用DependencyProperty 自定义ImageButton控件 定义属性

    为ImageButton自定义IconSource和Contents属性 xaml代码 <UserControl x:Class="SilverlightCreate.Silverli ...

  6. git使用笔记-基础篇

    git使用手册:https://git-scm.com/book/zh/v1/ 一.分支 1.查看所有本地分支 git branch 2.查看所有本地分支和远程分支 git branch -a 3.查 ...

  7. [转]关于Jquery的DataTables里TableTools的应用

    本文转自:http://147068307.iteye.com/blog/1700516 最近在产品中使用了TableTools这个工具,主要用来实现导出和复制功能. 但是在实际的运用中出现了以下相关 ...

  8. bootstrap-datetimepicker:基于twitter bootstrap的日期/时间选择控件

    bootstrap-datetimepicker是一个基于twitter bootstrap的简单日期/时间选择控件. <!DOCTYPE HTML> <html> <h ...

  9. Java集合框架概述

    集合框架指的是容器类.Java中大量持有对象的方式有数组和容器类两种方式.数组相较于容器类的优点在于:①随机访问效率高:由于是连续的存储空间,可以计算地址直接访问 ②类型确定:数组在创建时即可确定元素 ...

  10. [Android]apk反编译方法

    在学习Android开发的过程你,你往往会想去学习别人的apk是怎么开发的,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK进行反编译查看.下面是我参考了一些 ...