Navigo — лёгкая и мощная библиотека для управления маршрутизацией в приложениях на JavaScript. Одной из ключевых возможностей является обновление текущего маршрута без перезагрузки страницы, что позволяет динамически изменять адрес в адресной строке и при этом управлять состоянием приложения.
navigateМетод navigate(path, [options]) используется для
перехода на другой маршрут или для обновления текущего маршрута.
Параметры метода:
path — строка маршрута, на который
нужно перейти.
options — объект с дополнительными
настройками:
updateBrowserURL (boolean) — обновлять ли URL в
адресной строке. По умолчанию true.callHandler (boolean) — вызывать ли обработчик
маршрута. По умолчанию true.Пример обновления текущего маршрута без перезагрузки и без вызова обработчика:
const router = new Navigo('/', { hash: true });
router.on('/home', () => {
console.log('Маршрут /home активен');
});
router.navigate('/home', { updateBrowserURL: true, callHandler: false });
В этом примере URL обновится, но обработчик /home не
будет вызван повторно. Это полезно при необходимости просто
синхронизировать адрес с текущим состоянием приложения.
updatePageLinksМетод updatePageLinks() позволяет обновлять все
внутренние ссылки страницы, чтобы они использовали маршрутизацию Navigo
вместо стандартного поведения браузера. При обновлении маршрута можно
синхронизировать все ссылки с новым адресом.
router.updatePageLinks();
Используется после динамического изменения DOM, когда добавляются новые ссылки, которые должны работать с Navigo. Это гарантирует корректное поведение навигации при обновлении маршрутов.
resolveМетод resolve() инициирует проверку текущего URL и
вызывает соответствующий обработчик маршрута. Это позволяет обновлять
текущий маршрут программно и управлять отображением контента.
router.resolve();
Применяется, когда маршрут был изменён вручную или через
navigate с callHandler: false, и требуется
вызвать соответствующий обработчик.
Navigo поддерживает динамические параметры в маршрутах. Для
обновления маршрута с параметрами используется объект
params, передаваемый в navigate или через
шаблон маршрута.
router.on('/user/:id', (params) => {
console.log(`Пользователь с ID: ${params.id}`);
});
router.navigate('/user/42'); // URL обновится и вызовется обработчик
Параметры можно изменять без полной перезагрузки страницы, что делает маршрутизацию гибкой и динамичной.
Для обновления маршрута без добавления новой записи в историю
браузера используется опция replace:
router.navigate('/profile', { replace: true });
Это особенно полезно при изменении состояния страницы, когда нежелательно, чтобы пользователь возвращался к предыдущему URL с помощью кнопки “Назад”.
router.navigate('/search?query=javascript');
router.navigate('/dashboard', { callHandler: false });
router.navigate('/order/123', { replace: true, callHandler: true });
navigate всегда обновляет URL, если
updateBrowserURL установлен в true.callHandler: false позволяет изменять
адрес без повторного рендеринга контента.replace: true предотвращает накопление URL в истории
браузера, что критично для SPA с динамическим контентом.Обновление текущего маршрута в Navigo обеспечивает плавную навигацию, синхронизацию состояния приложения и контроль над историей браузера, что является фундаментом для построения современных SPA с динамическим URL.