理想是火,点燃熄灭的灯。
new URL
是操作 URL 的强大工具,简化了参数的获取、修改、添加和删除等操作,同时能方便解析和构造 URL。在前端开发中有很多实用场景,以下是它的主要功能和典型使用场景:
创建 URL 对象
const url = new URL("https://example.com/path?query=123#hash"); console.log(url.hostname); // "example.com" console.log(url.pathname); // "/path" console.log(url.search); // "?query=123" console.log(url.hash); // "#hash"
通过 Base URL 构造
const baseURL = "https://example.com"; const newURL = new URL("/newPath?key=value", baseURL); console.log(newURL.href); // "https://example.com/newPath?key=value"
获取参数值:get
场景:前端路由或功能模块中,读取 URL 参数来动态调整页面内容。
const url = new URL("https://example.com?user=John&age=25"); console.log(url.searchParams.get("user")); // "John" console.log(url.searchParams.get("age")); // "25" console.log(url.searchParams.get("nonexistent")); // null
2. 添加或修改参数:set
场景:动态更新 URL 的参数(如筛选条件、分页参数等)。
const url = new URL("https://example.com?user=John"); url.searchParams.set("user", "Jane"); // 修改参数 url.searchParams.set("age", "30"); // 添加新参数 console.log(url.toString()); // "https://example.com/?user=Jane&age=30"
3. 删除参数:delete
场景:需要清理掉某些参数时使用,例如取消某些筛选条件。
const url = new URL("https://example.com?user=John&age=25"); url.searchParams.delete("user"); console.log(url.toString()); // "https://example.com/?age=25"
has
场景:在处理逻辑前,先验证某个参数是否存在。
const url = new URL("https://example.com?user=John"); console.log(url.searchParams.has("user")); // true console.log(url.searchParams.has("age")); // false
forEach
场景:在需要展示或处理全部参数的情况(如调试或构造 API 请求)。
const url = new URL("https://example.com?user=John&age=25"); url.searchParams.forEach((value, key) => { console.log(`${key}: ${value}`); }); // 输出: // user: John // age: 25
场景:分页、过滤条件变更后更新 URL。
const url = new URL("https://example.com"); const params = { user: "John", age: "25", country: "US" }; for (const [key, value] of Object.entries(params)) { url.searchParams.set(key, value); } console.log(url.toString()); // "https://example.com/?user=John&age=25&country=US"
场景:在前端构建 RESTful API 请求时,方便拼接路径和参数。
const baseURL = "https://api.example.com/v1"; const endpoint = "users"; const url = new URL(`${baseURL}/${endpoint}`); url.searchParams.set("page", "2"); url.searchParams.set("limit", "10"); console.log(url.toString()); // "https://api.example.com/v1/users?page=2&limit=10"
场景:需要对跳转链接中的参数进行动态调整。
const url = new URL(window.location.href); url.searchParams.set("ref", "newsletter"); window.location.href = url.toString();
场景:读取 URL 片段,做一些修改后展示或传递。
const url = new URL("https://example.com/path#section1"); console.log(url.hash); // "#section1" url.hash = "section2"; console.log(url.toString()); // "https://example.com/path#section2"
场景:验证用户输入或动态生成的 URL 是否合法。
try { const url = new URL("invalid-url"); // 抛出错误 } catch (error) { console.error("Invalid URL:", error.message); }
拓展:之前获取url参数的时候 会使用new URLSearchParams
他们都可以实现相同的功能的同时 相比较而言new URL会更丰富
作者: Bill 本文地址: http://biaoblog.cn/info?id=1732589195366
版权声明: 本文为原创文章,版权归 biaoblog 个人博客 所有,欢迎分享本文,转载请保留出处,谢谢!
上一篇:没有了
下一篇:重学if else吧!