Node.js学习之地址解析模块URL的使用详解
发布时间 - 2026-01-11 03:27:38 点击率:次前言

本文主要给大家介绍了关于Node.js地址解析模块URL使用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
url结构化/模块化/路径解析
- 结构化:
url.parse(urlString[, parseQueryString[, slashesDenoteHost]]) - 模块化:
url.format(urlObject) - 路径解析:
url.resolve(from, to)
一个URL字符串是一个结构化的字符串包含多个有意义的组件。在解析时,返回一个URL对象包含每一个组件的属性。
官方手册上面的一张图是这样子的:
这张图解释了一个url结构化成哪些部分,哪些部分又包含哪些部分
protocol: 请求协议
host: URL主机名已全部转换成小写, 包括端口信息
auth:URL中身份验证信息部分
hostname:主机的主机名部分, 已转换成小写
port: 主机的端口号部分
pathname: URL的路径部分,位于主机名之后请求查询之前
search: URL 的“查询字符串”部分,包括开头的问号。
path: pathname 和 search 连在一起。
query: 查询字符串中的参数部分(问号后面部分字符串),或者使用 querystring.parse() 解析后返回的对象。
hash: URL 的 “#” 后面部分(包括 # 符号)
url结构化
将一个url地址结构化成为拥有上图属性的url对象。url.parse第二个和第三个参数默认为false。
- 第二个参数决定query属性值是字符串还是对象
- 第三个参数如果为true,//后的第一个令牌文字字符串和下一个/之间的文字字符串将被解释为主机
例子如下
const url = require("url");
var urlstr = "http://localhost:8888/bb?name=bigbear&memo=helloworld&memo=helloC";
var urlobj = url.parse(urlstr);
console.log(urlobj);
/*
Url {
protocol: 'http:',
slashes: true,
auth: null,
host: 'localhost:8888',
port: '8888',
hostname: 'localhost',
hash: null,
search: '?name=bigbear&memo=helloworld&memo=helloC',
query: 'name=bigbear&memo=helloworld&memo=helloC',
pathname: '/bb',
path: '/bb?name=bigbear&memo=helloworld&memo=helloC',
href: 'http://localhost:8888/bb?name=bigbear&memo=helloworld&memo=helloC' }
*/
第二个参数为true时
query: { name: ‘bigbear', memo: [ ‘helloworld', ‘helloC' ] },
例子如下:
const url = require("url");
var urlstr = "http://localhost:8888/bb?name=bigbear&memo=helloworld&memo=helloC";
console.log(
url.parse(urlstr, true)
)
/*
Url {
protocol: 'http:',
slashes: true,
auth: null,
host: 'localhost:8888',
port: '8888',
hostname: 'localhost',
hash: null,
search: '?name=bigbear&memo=helloworld&memo=helloC',
query: { name: 'bigbear', memo: [ 'helloworld', 'helloC' ] },
pathname: '/bb',
path: '/bb?name=bigbear&memo=helloworld&memo=helloC',
href: 'http://localhost:8888/bb?name=bigbear&memo=helloworld&memo=helloC' }
*/
第三个参数对比
例子如下:
const url = require("url");
var urlstr = "//foo/bar ";
console.log(
url.parse(urlstr, true,true)
)
/*
输出:Url {
protocol: null,
slashes: true,
auth: null,
host: 'foo',
port: null,
hostname: 'foo',
hash: null,
search: '',
query: {},
pathname: '/bar',
path: '/bar',
href: '//foo/bar' }
*/
const url = require("url");
var urlstr = "//foo/bar ";
console.log(
url.parse(urlstr)
)
/*
输出:
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: null,
query: null,
pathname: '//foo/bar',
path: '//foo/bar',
href: '//foo/bar' }
*/
url模块化
将一个url对象转换成一个url字符串,url对象中的属性为url.parse()产生的对象的属性。
url.parse()和url.format()互为逆操作。
例子如下:
const url = require("url");
var Urlobj = {
protocol: 'http:',
slashes: true,
auth: null,
host: 'localhost:8888',
port: '8888',
hostname: 'localhost',
hash: null,
search: '?name=bigbear&memo=helloworld&memo=helloC',
query: { name: 'bigbear', memo: [ 'helloworld', 'helloC' ] },
pathname: '/bb',
path: '/bb?name=bigbear&memo=helloworld&memo=helloC',
}
console.log(
url.format(Urlobj)
)
//输出:http://localhost:8888/bb?name=bigbear&memo=helloworld&memo=helloC
路径解析:url.resolve(from, to)
url.resolve()方法解决了目标URL相对于基本URL的方式类似于Web浏览器解决锚标记href。
官方手册例子:
url.resolve('/one/two/three', 'four');
// '/one/two/four'
url.resolve('http://example.com/', '/one');
// 'http://example.com/one'
url.resolve('http://example.com/one', '/two');
// 'http://example.com/two'
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
# nodejs
# url模块
# nodejs的url模块
# 解析url参数
# Javascript地址引用代码实例解析
# Node.Js生成比特币地址代码解析
# Android编程实现根据经纬度查询地址并对获取的json数据进行解析的方法
# js实现百度地图定位于地址逆解析
# 显示自己当前的地理位置
# JS寄快递地址智能解析的实现代码
# 结构化
# 第二个
# 第三个
# 转换成
# 是一个
# 相关内容
# 第一个
# 多个
# 说了
# 令牌
# 不多
# 有一定
# 给大家
# 将被
# 这篇文章
# 谢谢大家
# 有意义
# 相对于
# 这样子
# 类似于
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
打造顶配客厅影院,这份100寸电视推荐名单请查收
Bootstrap CSS布局之列表
C语言设计一个闪闪的圣诞树
*服务器网站为何频现安全漏洞?
SQL查询语句优化的实用方法总结
千库网官网入口推荐 千库网设计创意平台入口
如何在万网主机上快速搭建网站?
EditPlus中的正则表达式 实战(1)
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
浅述节点的创建及常见功能的实现
JavaScript如何实现类型判断_typeof和instanceof有什么区别
网站制作软件有哪些,制图软件有哪些?
Linux安全能力提升路径_长期防护思维说明【指导】
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
如何快速搭建高效WAP手机网站吸引移动用户?
在线制作视频的网站有哪些,电脑如何制作视频短片?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
Laravel如何实现数据库事务?(DB Facade示例)
Laravel Fortify是什么,和Jetstream有什么关系
如何安全更换建站之星模板并保留数据?
如何登录建站主机?访问步骤全解析
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
如何在Windows虚拟主机上快速搭建网站?
Laravel如何与Pusher实现实时通信?(WebSocket示例)
常州企业网站制作公司,全国继续教育网怎么登录?
黑客如何通过漏洞一步步攻陷网站服务器?
如何用景安虚拟主机手机版绑定域名建站?
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
JS中对数组元素进行增删改移的方法总结
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
如何用JavaScript实现文本编辑器_光标和选区怎么处理
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
香港服务器网站推广:SEO优化与外贸独立站搭建策略
Laravel storage目录权限问题_Laravel文件写入权限设置
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
EditPlus中的正则表达式实战(6)
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
网站制作企业,网站的banner和导航栏是指什么?
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
如何在万网自助建站中设置域名及备案?
如何在景安云服务器上绑定域名并配置虚拟主机?
Laravel如何创建自定义中间件?(Middleware代码示例)
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
JavaScript如何实现路由_前端路由原理是什么
Laravel如何创建自定义Facades?(详细步骤)
Python正则表达式进阶教程_复杂匹配与分组替换解析
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
Android 常见的图片加载框架详细介绍
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】

