URL 类 详解

这是 浏览器 + Node.js 通用的官方标准 API,专门用来拆解、拼接、修改加粗样式网址,学完你处理所有链接都不用愁了。

基础用法

  1. 最简写法(完整网址)
js 复制代码
// 浏览器 / Node.js 都能直接运行
const url = new URL("https://www.baidu.com/s?wd=nodejs&page=1");
  1. 常用写法(路径 + 基础域名,处理接口最常用)
js 复制代码
// base:基础域名
// 第二个参数:相对路径
const url = new URL("/s?wd=nodejs", "https://www.baidu.com");

这个写法在 Node.js 写服务器、前端处理接口 时超级常用!

属性列表

属性名 取值 含义(通俗)
u.href 完整网址 整个链接字符串
u.protocol https: 协议(http/https/ftp)
u.host www.baidu.com:8080 域名 + 端口
u.hostname www.baidu.com 纯域名(不带端口)
u.port 8080 端口号
u.pathname /search 路径(域名后面的地址)
u.search ?wd=nodejs&page=3 完整查询参数(带?)
u.hash #chapter1 锚点(# 后面的内容)
u.origin https://www.baidu.com:8080 协议 + 域名 + 端口

这些属性既能读,也能改!

js 复制代码
u.pathname = "/home"; // 修改路径
u.port = "3000";      // 修改端口
console.log(u.href);  // 自动生成新网址

searchParams(处理?后面的参数)

searchParams 是 URL 类自带的参数管理器,不用你拆分字符串,自带一堆方法。
常用方法

js 复制代码
const u = new URL("https://xxx.com?wd=nodejs&page=2");
  1. 获取参数
js 复制代码
u.searchParams.get("wd")   // "nodejs"
u.searchParams.get("page") // "2"
  1. 修改参数
js 复制代码
u.searchParams.set("page", 10); 
// 网址变成 ?wd=nodejs&page=10
  1. 添加参数
js 复制代码
u.searchParams.append("limit", 20);
// 网址变成 ?wd=nodejs&page=10&limit=20
  1. 判断参数是否存在
js 复制代码
u.searchParams.has("wd") // true
  1. 删除参数
js 复制代码
u.searchParams.delete("page");
  1. 遍历所有参数
js 复制代码
u.searchParams.forEach((value, key) => {
  console.log(key, value);
});

特点

1. 全平台通用

  • 浏览器原生支持
  • Node.js 原生支持
  • Electron 支持
  • 手机端网页支持

2. 自动处理编码

你不用管中文乱码,URL 类自动编码 / 解码:

js 复制代码
const url = new URL("https://xxx.com?name=张三");
console.log(url.search); // ?name=%E5%BC%A0%E4%B8%89 (自动编码)
console.log(url.searchParams.get("name")); // 张三 (自动解码)
相关推荐
laoli_coding9 小时前
如何配置HTTPS站点访问的免费SSL域名证书
网络协议·https·node.js·ssl
To_OC10 小时前
手写 AI 编程 Agent 的命令执行工具:我被 child_process 坑出来的实战经验
后端·node.js·agent
天若有情67317 小时前
前端性能优化:从“按下预加载”到“AI级智能预判系统”
前端·性能优化·js·active·hover·首屏加载
大家的林语冰17 小时前
👍 Rust 为 Node 插上翅膀,反超 Bun 和 pnpm,一体化工具我也有!
前端·javascript·node.js
Kel20 小时前
Node.js 本质:从全脉络视角理解运行时原理
javascript·设计模式·node.js
ShiXZ2131 天前
指令集-NPM 常用指令速查手册
前端·npm·node.js
孟陬2 天前
高质量全方位的 AI 工具 sse-stuntman — Mock SSE 接口
前端·node.js·openai
掰头战士2 天前
你本地的LLM有时会胡乱使用tools?不妨用MCP规范LLM工具调用!
node.js·llm·全栈
触底反弹2 天前
🧠 LangChain Agent 入门:为什么直接调大模型 API 远远不够?
人工智能·node.js·llm
书中枫叶2 天前
从「上次几点喂奶」到全栈小程序:我做了个喂宝助手
mongodb·微信小程序·node.js