Navigo предоставляет мощный и гибкий API для работы с маршрутами в
одностраничных приложениях (SPA), включая управление историей браузера.
Основной инструмент для манипуляций с историей — метод
navigate, который позволяет изменять URL без полной
перезагрузки страницы, а также поддерживает опцию замены текущего
состояния истории.
navigate и его ключевые возможностиМетод navigate используется для программной навигации
между маршрутами. Синтаксис выглядит следующим образом:
router.navigate(path, {
trigger: true,
replace: false
});
true) или добавлять новую
(false).Пример замены текущего URL без создания новой записи истории:
router.navigate('/dashboard', { replace: true });
В этом случае URL изменится на /dashboard, но кнопка
«Назад» в браузере не вернёт пользователя на предыдущий путь, так как
текущая запись истории была заменена.
replace от обычной навигацииОбычная навигация (replace: false) создаёт новую запись
в истории, что позволяет пользователю возвращаться к предыдущему
маршруту с помощью кнопки «Назад». Использование
replace: true актуально в следующих случаях:
/ на /home.Иногда требуется изменить URL без запуска обработчиков маршрутов. Для
этого используется комбинация navigate с опцией
trigger: false:
router.navigate('/profile?tab=settings', { trigger: false, replace: true });
В данном примере адрес изменяется, история заменяется, но маршруты не перезапускаются. Такой подход полезен при обновлении параметров запроса или состояния интерфейса без полной перерисовки компонентов.
Navigo поддерживает работу с состоянием истории через объект
window.history. Можно сохранить дополнительную информацию в
записи истории, используя API браузера:
const state = { filter: 'active' };
window.history.replaceState(state, '', '/tasks');
Этот метод совместим с replace: true в
navigate, позволяя хранить и извлекать данные состояния при
навигации.
const router = new Navigo('/');
router.on({
'/home': () => console.log('Главная страница'),
'/dashboard': () => console.log('Панель управления'),
'/profile': () => console.log('Профиль пользователя')
}).resolve();
// Переход с заменой текущего URL
router.navigate('/dashboard', { trigger: true, replace: true });
// Обновление параметров без вызова обработчиков
router.navigate('/profile?tab=security', { trigger: false, replace: true });
В этом примере:
/dashboard заменяет текущий URL и вызывает
обработчик маршрута./profile с параметром tab
заменяет URL без вызова обработчика, позволяя обновить адрес без лишней
перерисовки.replace: true для
перенаправлений — это предотвращает засорение истории
промежуточными маршрутами.trigger: false при изменении
состояния — обеспечивает динамическое обновление URL без
перезапуска маршрутов.history.state — помогает при восстановлении
состояния интерфейса после обновления страницы или возвращения к
маршруту.Замена истории в Navigo — это простой и эффективный инструмент для управления URL и состояния приложения, который позволяет создавать плавные переходы и контролировать поведение браузера без полной перезагрузки страницы.