【Node.js】URL 模块

自动重启服务器的插件nodemon: npm i -g nodemon。或者 node-dev 也可以:npm i -g node-dev

parse,format,resolve 为旧版写法。

parse

js 复制代码
import url from 'url'
const urlString = 'https://www.baidu.com:443/ad/index.html?id=8&name=mouse#tag=110'
const parsedStr = url.parse(urlString)
console.log(parsedStr)

使用 const parsedStr = url.parse(urlString, true) 时,会将 query 转换为对象的形式:

format

js 复制代码
import url from 'url'
const urlObject = {
  protocol: 'https:',
  slashes: true,
  auth: null,
  host: 'www.baidu.com:443',
  port: '443',
  hostname: 'www.baidu.com',
  hash: '#tag=110',
  search: '?id=8&name=mouse',
  query: { id: '8', name: 'mouse' },
  pathname: '/ad/index.html',
  path: '/ad/index.html?id=8&name=mouse'
}
const parsedObj = url.format(urlObject)
console.log(parsedObj)

resolve

js 复制代码
import url from 'url'
// url.resolve(from, to)
var a = url.resolve('/one/two/three', 'four')
var e = url.resolve('/one/two/three/', 'four')
var b = url.resolve('http://example.com/', '/one')
var c = url.resolve('http://example.com/one', '/two')
var d = url.resolve('http://example.com/one/', 'three')
console.log(a + "," + e + "," + b + "," + c + "," + d)

总结一下就是:1. 没有域名的地址,在地址最后一个 / 后进行拼接。2. 有域名的地址,to 含有 / ,直接拼接到域名之后,没有/,拼接到 from 的后面。

新版写法 new URL。

js 复制代码
import http from 'http'
import url from 'url'
// 创建本地服务器接收数据
const server = http.createServer((req, res) => {
  const myUrl = new URL(req.url, 'http://127.0.0.1:3000')
  console.log(myUrl)
  res.writeHead(200, { 
    'Content-Type': 'application/json' 
  })
  res.end(JSON.stringify({
    data: "hello"
  }))
})
server.listen(8000,()=> {
  console.log("server is running")
})
js 复制代码
const myURL = new URL('/foo', 'https://example.org/');
// https://example.org/foo

查询参数:

js 复制代码
const myURL = new URL('https://example.org/abc?foo=~bar');
console.log(myURL.search);  // ?foo=~bar

其他用法都在官方文档,写的很清楚。Node.js 中文网

相关推荐
天下代码客16 小时前
使用electronc框架调用dll动态链接库流程和避坑
前端·javascript·vue.js·electron·node.js
weixin1997010801617 小时前
【性能提升300%】仿1688首页的Webpack优化全记录
前端·webpack·node.js
不倒翁玩偶19 小时前
npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
前端·npm·node.js
一心赚狗粮的宇叔20 小时前
03.Node.js依赖包补充说明及React&Node.Js项目
前端·react.js·node.js
-嘟囔着拯救世界-21 小时前
【2026 最新版】OpenAI 祭出王炸 GPT-5.3-Codex!Win11 + VSCode 部署保姆级教程
vscode·gpt·chatgpt·node.js·node·codex·gpt5
全栈前端老曹1 天前
【MongoDB】Node.js 集成 —— Mongoose ORM、Schema 设计、Model 操作
前端·javascript·数据库·mongodb·node.js·nosql·全栈
行者无疆_ty2 天前
什么是Node.js,跟OpenCode/OpenClaw有什么关系?
人工智能·node.js·openclaw
-凌凌漆-2 天前
【npm】npm的-D选项介绍
前端·npm·node.js
lucky67072 天前
Windows 上彻底卸载 Node.js
windows·node.js
Android系统攻城狮2 天前
鸿蒙系统Openharmony5.1.0系统之解决编译时:Node.js版本不匹配问题(二)
node.js·鸿蒙系统·openharmony·编译问题·5.1