URL Pattern API
Это инструмент для сопоставления URL на осн
ове шаблонов. Допустим, есть URL https://example.com/products/123. И нужно сопоставить его с шаблоном https://example.com/products/:id. Это можно сделать так:
const urlPattern = new URLPattern({pathname: '/products/:id'});
const url = new URL('https://example.com/products/123');
console.log(urlPattern.test(url)); // true
Кроме теста соответствия урла шаблону, можно ещё и извлечь соответствующие параметры:
const urlPattern = new URLPattern({pathname: '/products/:id'});
const url = new URL('https://example.com/products/123');
const result = urlPattern.exec(url);
console.log(result.pathname.groups.id); // "123"
Самый очев
идный юзкейс URLPattern — клиентский роутер, который проверяет соответствие текущего урла паттерну, по которому показывается нужный контент. Пример в React:
<Router>
<Route path="/">
<Home />
</Route>
<Route path="/about">
<About />
</Route>
<Route path="/messages/:id">
<Messages />
</Route>
</Router>
function Route({ path, children }) {
const baseURL = window.location.origin;
const pattern = new URLPattern({ pathname: path, baseURL });
const match = pattern.test(currentPath);
if (!match) {
return null;
}
return children;
}
Помимо
pathname URLPattern умеет определять все остальные части урла: hash, hostname, password, port, protocol, search, username.Работает пока что только в Chromium, но полифиллится.
---
Поставьте 👾, если нужно записать видос с написанием такого простенького роутера с использованием
URLPattern целиком.