Экземпляр Navigo предоставляет набор методов для
управления маршрутизацией в одностраничных приложениях (SPA). Они
позволяют создавать маршруты, навигировать по URL, управлять
параметрами, а также реагировать на изменения истории браузера.
on(path, handler, [name])Метод on регистрирует маршруты и сопоставляет их с
функциями-обработчиками.
Синтаксис:
router.on(path, handler, name);
Параметры:
path — строка маршрута (например, /home),
массив маршрутов (['/home', '/about']) или регулярное
выражение.handler — функция, которая вызывается при совпадении
маршрута. Получает объект с параметрами (params) и другими
свойствами.name (опционально) — имя маршрута для
последующего использования в generate.Пример использования:
router.on('/user/:id', ({ params }) => {
console.log('Пользователь с ID:', params.id);
});
Поддерживаются динамические сегменты (:id) и
необязательные сегменты (:id?).
navigate(path, [options])Метод позволяет программно изменить URL без перезагрузки страницы и инициировать обработку маршрута.
Синтаксис:
router.navigate(path, options);
Параметры:
path — путь для навигации (например,
/about).
options (опционально) — объект с
параметрами:
updateBrowserURL (по умолчанию true) —
обновлять ли URL в браузере.callHandler (по умолчанию true) — вызывать
обработчик маршрута.Пример использования:
router.navigate('/home', { updateBrowserURL: true, callHandler: true });
resolve()Метод инициирует проверку текущего URL и вызывает соответствующий обработчик. Особенно полезен после асинхронной загрузки маршрутов.
Пример:
router.resolve();
Можно вызывать после on для обработки URL при первой
загрузке страницы.
updatePageLinks()Обновляет все ссылки <a> на странице, которые
ведут на маршруты, управляемые Navigo. Позволяет
использовать стандартные ссылки без перезагрузки страницы.
Пример:
router.updatePageLinks();
Метод следует вызывать после динамического добавления ссылок в DOM.
generate(name, params)Создаёт URL для маршрута по его имени и переданным параметрам.
Синтаксис:
const url = router.generate(name, params);
Пример:
router.on('/user/:id', handler, 'user');
const url = router.generate('user', { id: 42 }); // /user/42
Позволяет абстрагироваться от конкретных строк маршрутов при навигации.
link(path, [options])Возвращает строку URL, пригодную для использования в ссылках. Похож
на generate, но работает с путями напрямую.
Пример:
const href = router.link('/about');
console.log(href); // /about
pause() и
resume()Методы управления обработкой маршрутов.
pause() — приостанавливает обработку изменений
URL.resume() — возобновляет обработку после
pause.Пример использования:
router.pause();
router.navigate('/settings', { callHandler: false });
router.resume();
Полезно при массовом изменении состояния приложения без повторного вызова обработчиков.
notFound(handler)Регистрация обработчика для маршрутов, которые не совпали с ни одним определённым маршрутом.
Пример:
router.notFound(() => {
console.log('Страница не найдена');
});
Можно использовать для отображения страницы 404 в SPA.
destroy()Удаляет все маршруты и обработчики, освобождая ресурсы экземпляра
Navigo. После вызова метода экземпляр перестаёт реагировать
на изменения URL.
Пример:
router.destroy();
hooksNavigo поддерживает хуки для выполнения действий перед или после обработки маршрута:
before(handler) — вызывается перед обработчиком
маршрута. Можно отменить переход, вернув false или промис,
который отклоняется.after(handler) — вызывается после выполнения
обработчика маршрута.Пример:
router.hooks({
before: (done, params) => {
console.log('Перед маршрутом', params);
done(); // обязательно вызвать
},
after: (params) => {
console.log('После маршрута', params);
}
});
Хуки полезны для авторизации, логирования или выполнения анимаций при переходе между страницами.
В обработчике маршрута доступен объект params:
router.on('/product/:category/:id', ({ params }) => {
console.log(params.category, params.id);
});
:id, :slug:id?/user/:id(\\d+)Можно объединять маршруты в группы с общим префиксом:
router.on('/admin/*', ({ params }) => {
console.log('Админский раздел', params);
});
* обозначает wildcard для всех вложенных маршрутов.
resolve() после регистрации маршрутов
при загрузке страницы.link() или
generate() вместо ручного указания URL.pause()
и resume().notFound() для SPA-404 страниц.