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")); // 张三 (自动解码)
相关推荐
FEF前端团队6 小时前
小程序微信支付 V3 接入实战手册:从商户配置到前后端落地
javascript·后端·node.js
万敏11 小时前
Vue3 全栈实战第七周:错误处理与请求层封装实战记录
vue.js·node.js·全栈
AD_youyu13 小时前
Node.js 安装教程
node.js
m0_380743871 天前
为 OpenAI 兼容接口配置教程
开发语言·python·node.js
__zRainy__1 天前
Node系列 · ORM:Sequelize 简介
数据库·后端·node.js
水獭比特1 天前
工具都批准了,为什么还不能执行?给 Agent 补上第二道校验
javascript·人工智能·node.js
__zRainy__1 天前
Node系列 · ORM:mysql 驱动程序
数据库·后端·mysql·node.js·orm
__zRainy__1 天前
Node系列 · ORM:Sequelize 模型
数据库·后端·node.js
秋秋小事1 天前
提示词工程
node.js
__zRainy__1 天前
Node系列 · 数据库:MySQL 安装
数据库·后端·mysql·node.js