Node.js 初识 URL 模块

简介:

URL 模块提供了一些解析 URL 的工具

1
var  url = require( 'url' );


URL 是一段 结构化的字符串,包含了多个有意义的部分。解析完成以后,会返回一个 URL对象(包含每个部分的属性)。


wKioL1hstFLyfdG-AABGNZGvyz4802.png


urlObject.href

href 属性指的是 被解析后完整的 URL 字符串,包括 协议名、主机名等部分,并且被转换成小写字母

例如:'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'



urlObject.protocol

protocol 属性指的是 小写格式 URL 的协议名

例如:'http:'



urlObject.slashes

slashes 属性是一个布尔值,如果协议名后紧跟着两个 //,则为true



urlObject.host

host 属性是整个小写 URL 的主机名,也包括端口号

例如:'host.com:8080'



urlObject.auth

auth 属性是 URL 的用户名和密码部分

例如:'user:pass'



urlObject.hostname

hostname 属性是小写 URL 的主机名,不包括端口号

例如:'host.com'



urlObject.port

port 属性是端口号, host 属性中的数字部分

例如:'8080'



urlObject.pathname

pathname 属性由 URL 完整的路径部分组成,位于在host属性(包括端口号)之后和 query或hash 属性之前的部分,由?或 # 来界定

例如:'host.com'




urlObject.search

search 属性由 URL 中的整个 query string 部分组成,包含 “?”符号

例如:'?query=string'




urlObject.path

path 属性是 pathname 部分和 search 部分的串联

例如:'/p/a/t/h?query=string'




urlObject.query

query 属性是不包含 “?”符号的 query string 或者是通过 querystring 模块的 parse() 方法返回的一个对象。

例如:'query=string' or {'query': 'string'}




urlObject.hash

hash 属性指的是锚点,URL中包含“#”符号的部分

例如:'#hash'


现在可以通过一段 JS 代码来查看下 URL 被解析后的各个部分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var  http = require( 'http' );
 
var  url = require( 'url' );
 
var  server = http.createServer( function (req,res){
 
     //url.parse()  接收一个URL字符串,解析并返回一个URL对象
     
     var  result = url.parse( 'http://user:pass@host.com:8080/p/a/t/h?query=string#hash' );
 
     console.log(result);
     res.end();
});
 
server.listen(4000,  '127.0.0.1' );


打开浏览器,在地址栏输入“127.0.0.1:4000”,可以查看到控制台打印出: (此处用的是Webstorm,如果不是的话,还需要用命令行工具先挂起服务器)

wKiom1hsu96z32qGAABZ_3pGPAM362.png


url.parse()如果第二个参数是true,那么就可以将所有的查询变为对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var  http = require( 'http' );
 
var  url = require( 'url' );
 
var  server = http.createServer( function (req,res){
 
     //url.parse()  接收一个URL字符串,解析并返回一个URL对象
 
     var  result = url.parse( 'http://user:pass@host.com:8080/p/a/t/h?query=string#hash' , true );
 
     console.log(result);
     res.end();
});
 
server.listen(4000,  '127.0.0.1' );


查看打印结果中 query 部分

wKioL1hsu9Dxg4QDAABjMmlhicE268.png



根据前面的概念,我们尝试做一个小例子。新建一个表单页面,输入用户名、年龄、性别,提交到 127.0.0.1:5000,在页面中输出 提交的信息


HTML代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!DOCTYPE html>
< html >
< head  lang = "en" >
     < meta  charset = "UTF-8" >
     < meta  http-equiv = "X-UA-Compatible"  content = "IE=edge" >
     < meta  name = "format-detection"  content = "telephone=no" />
     < meta  name = "format-detection"  content = "email=no" />
     < meta  name = "viewport"  content = "width=device-width, initial-scale=1" >
     < title ></ title >
     <!--[if lt IE 9]>
       <script src="http://cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>
       <script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
     <![endif]-->
 
</ head >
< body >
< form  action = "http://127.0.0.1:5000"  method = "get" >
     用户名:< input  type = "text"  name = "name" >< br >
     年龄:< input  type = "text"  name = "age" >< br >
     性别:< input  type = "radio"  name = "gender"  value = "male" >男
         < input  type = "radio"  name = "gender"  value = "female" >女
     < br >
     < input  type = "submit"  value = "提交" >
</ form >
 
</ body >
</ html >



JS代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var  http = require( 'http' );
var  url = require( 'url' );
 
var  server = http.createServer( function (req,res){
     //获取查询部分,第二个参数是true,所以得到了一个对象;否则,得到一个字符串
     var  queryObject = url.parse(req.url,  true ).query;
 
     //获得用户名
     var  name = queryObject.name;
     //获得年龄
     var  age = queryObject.age;
     //获得性别
     var  gender = queryObject.gender;
 
 
     res.end( '服务器收到了表单请求:' + name + ':'  + age + ':' +gender)
});
 
server.listen(5000,  '127.0.0.1' );



双击打开客户端的表单页面,录入信息以后,点击“提交”按钮

wKiom1hswEGSJnkTAAAcHD5GFjI012.png


提交以后获取到了用户信息:

wKiom1hswFeDZ7hKAAAbEI6_gX4780.png

本文转自   frwupeng517   51CTO博客,原文链接:http://blog.51cto.com/dapengtalk/1889020



相关文章
|
1天前
|
JavaScript 前端开发 测试技术
编写JavaScript模块化代码主要涉及将代码分割成不同的文件或模块,每个模块负责处理特定的功能或任务
【5月更文挑战第10天】编写JavaScript模块化代码最佳实践:使用ES6模块或CommonJS(Node.js),组织逻辑相关模块,避免全局变量,封装细节。利用命名空间和目录结构,借助Webpack处理浏览器环境的模块。编写文档和注释,编写单元测试以确保代码质量。通过这些方法提升代码的可读性和可维护性。
7 3
|
4天前
|
JavaScript 前端开发
javascript获取url信息的常见方法
javascript获取url信息的常见方法
13 2
|
11天前
|
消息中间件 监控 JavaScript
Node.js中的进程管理:child_process模块与进程管理
【4月更文挑战第30天】Node.js的`child_process`模块用于创建子进程,支持执行系统命令、运行脚本和进程间通信。主要方法包括:`exec`(执行命令,适合简单任务)、`execFile`(安全执行文件)、`spawn`(实时通信,处理大量数据)和`fork`(创建Node.js子进程,支持IPC)。有效的进程管理策略涉及限制并发进程、处理错误和退出事件、使用流通信、谨慎使用IPC以及监控和日志记录,以确保应用的稳定性和性能。
|
11天前
|
JavaScript
如何在JS中实现修改URL参数而不刷新页面
如何在JS中实现修改URL参数而不刷新页面
|
12天前
|
缓存 JavaScript 前端开发
Node.js的模块系统:CommonJS模块系统的使用
【4月更文挑战第29天】Node.js采用CommonJS作为模块系统,每个文件视为独立模块,通过`module.exports`导出和`require`引入实现依赖。模块有独立作用域,保证封装性,防止命名冲突。引入的模块会被缓存,提高加载效率并确保一致性。利用CommonJS,开发者能编写更模块化、可维护的代码。
|
15天前
|
存储 JavaScript 前端开发
js原生方法,获取url上面所有参数,并返回一个对象
JavaScript函数`getUrlParameters`用于从URL中提取所有参数并返回一个键值对对象。它接收URL,分割查询字符串,解码参数对,并存储在对象中。重复参数键会被存储为数组。
|
22天前
|
JavaScript
js如何实现修改URL参数并不刷新页面
js如何实现修改URL参数并不刷新页面
|
26天前
|
JavaScript API
node.js之模块系统
node.js之模块系统
|
28天前
|
Web App开发 JavaScript 前端开发
【Node系列】node核心模块util
Node.js的核心模块util为开发者提供了一些常用的实用工具函数。这些函数能够很方便地进行对象的继承、类型判断以及其他工具函数的实现。
22 2
|
28天前
|
域名解析 网络协议 JavaScript
【Node系列】node工具模块
Node.js有多个内置的工具模块,这些模块提供了用于执行各种任务的功能。
24 2