Navigo предоставляет встроенные возможности для отслеживания переходов между маршрутами и отладки навигации. Логирование позволяет фиксировать события маршрутизатора, включая изменение пути, обработку параметров и вызовы соответствующих обработчиков. Основная цель — облегчить выявление ошибок и понимание последовательности вызовов маршрутов.
Для включения базового логирования в Navigo используется метод
hooks и событие before, after или
error.
const router = new Navigo('/');
router.hooks({
before: (done, params) => {
console.log('Перед переходом на маршрут:', params);
done();
},
after: (params) => {
console.log('Маршрут успешно обработан:', params);
},
error: (error) => {
console.error('Ошибка при навигации:', error);
}
});
Navigo поддерживает динамические сегменты пути, которые можно логировать для анализа.
router.on('/users/:id', (params) => {
console.log('ID пользователя:', params.id);
});
:id — динамический сегмент, значение которого
автоматически извлекается Navigo и передается в объект
params.params можно использовать в любых хуках для
логирования и проверки правильности навигации.Для групповых маршрутов можно использовать шаблоны с несколькими параметрами:
router.on('/posts/:postId/comments/:commentId', (params) => {
console.log(`Пост: ${params.postId}, Комментарий: ${params.commentId}`);
});
Чтобы отслеживать попытки перехода на несуществующие маршруты, можно
настроить обработчик notFound:
router.notFound((query) => {
console.warn('Маршрут не найден:', query);
});
query содержит путь, на который пользователь пытался
перейти.Для более детальной отладки можно реализовать собственную систему логирования с уровнями:
const log = {
info: (msg, data) => console.log('INFO:', msg, data),
warn: (msg, data) => console.warn('WARN:', msg, data),
error: (msg, data) => console.error('ERROR:', msg, data)
};
router.hooks({
before: (done, params) => {
log.info('Начало маршрута', params);
done();
},
after: (params) => {
log.info('Маршрут завершен', params);
},
error: (err) => {
log.error('Ошибка маршрутизации', err);
}
});
Такой подход позволяет различать информационные сообщения, предупреждения и ошибки, упрощая последующий анализ логов.
Navigo позволяет программно инициировать навигацию с помощью метода
navigate. Для логирования этих переходов можно обернуть
вызовы:
function navigateAndLog(path) {
console.log('Переход к маршруту:', path);
router.navigate(path);
}
navigateAndLog('/users/42');
Это особенно полезно при реализации SPA, где переходы между страницами происходят без перезагрузки и их необходимо отслеживать.
Для ведения централизованного журнала можно интегрировать Navigo с внешними сервисами, такими как Sentry или LogRocket:
router.hooks({
after: (params) => {
externalLogger.track('Navigation', params);
},
error: (err) => {
externalLogger.error('Navigation Error', err);
}
});
externalLogger — любой объект, реализующий методы
логирования.before, after,
error — основной механизм перехвата событий навигации.navigate для SPA.Эти методы обеспечивают полное покрытие логирования навигации в приложениях на базе Navigo, позволяя получать детальные данные о работе маршрутизатора и корректно обрабатывать ошибки.