Navigo — это легковесная библиотека для маршрутизации в JavaScript, которая позволяет удобно управлять URL и параметрами маршрутов. Ключевое преимущество работы с Navigo заключается в гибкости обработки динамических сегментов пути и query-параметров.
Dинамический сегмент обозначается двоеточием (:) в
определении маршрута. Например:
const router = new Navigo('/');
router.on('/user/:id', ({ data }) => {
console.log(data.id);
});
В этом примере :id — динамический сегмент, который при
совпадении маршрута автоматически попадает в объект data.
Если пользователь переходит по пути /user/42, в консоль
будет выведено 42.
Особенности работы с динамическими сегментами:
:, автоматически
считается параметром./user/:id/post/:postId.data.router.on('/user/:id/post/:postId', ({ data }) => {
console.log(`User ID: ${data.id}, Post ID: ${data.postId}`);
});
Navigo поддерживает необязательные параметры, которые заключаются в скобки. Например:
router.on('/archive(/:year)(/:month)', ({ data }) => {
console.log(data.year, data.month);
});
/archive → data.year = undefined,
data.month = undefined/archive/2026 → data.year = "2026",
data.month = undefined/archive/2026/03 → data.year = "2026",
data.month = "03"Это позволяет создавать гибкие маршруты без необходимости дублировать обработчики для каждого варианта URL.
Query-параметры (?key=value) в Navigo можно получить
через объект query в колбэке:
router.on('/search', ({ query }) => {
console.log(query.q, query.page);
});
Переход по пути /search?q=navigo&page=2 выведет:
navigo 2
Особенности работы с query-параметрами:
undefined.router.on('/user/:id', ({ data, query }) => {
console.log(data.id, query.tab);
});
Путь /user/42?tab=posts → data.id = "42",
query.tab = "posts"
getParams()Navigo предоставляет метод getParams() для получения
параметров текущего маршрута без необходимости их передачи в колбэк.
Пример:
const params = router.getParams('/user/42');
console.log(params.id); // 42
getParams(route) возвращает объект, где ключи — имена
параметров маршрута, а значения — соответствующие сегменты URL.Параметры маршрута удобно использовать для динамического формирования URL:
const path = router.generate('/user/:id/post/:postId', { id: 42, postId: 7 });
console.log(path); // /user/42/post/7
generate() автоматически подставляет значения
параметров.Для сложных приложений рекомендуется:
/user/%20
→ " "."".parseInt(data.id, 10).Использование всех этих инструментов позволяет гибко управлять маршрутами, получать данные из URL и query-параметров, а также создавать масштабируемую структуру маршрутизации для сложных одностраничных приложений.