Navigo — это лёгкая и гибкая библиотека маршрутизации для JavaScript, предназначенная для создания SPA (Single Page Applications). Она позволяет управлять навигацией без перезагрузки страницы, обеспечивая чистый URL и удобное разделение логики приложения.
Создание экземпляра маршрутизатора выглядит следующим образом:
import Navigo from 'navigo';
const router = new Navigo('/', { hash: true });
Здесь первый параметр '/' задаёт корневой путь, а опция
hash: true позволяет использовать хэш-навигацию, что
особенно удобно при статических хостингах.
Маршруты в Navigo задаются с помощью метода on, который
принимает путь и функцию-обработчик.
router
.on('/', () => {
console.log('Главная страница');
})
.on('/about', () => {
console.log('О сайте');
})
.resolve();
Маршруты могут содержать динамические сегменты, обозначенные двоеточием:
router.on('/user/:id', (params) => {
console.log(`Пользователь с ID: ${params.id}`);
});
В этом случае params автоматически получает объект с
ключами, соответствующими динамическим сегментам.
Navigo поддерживает вложенные маршруты, что позволяет строить дерево навигации:
router.on({
'/dashboard': () => console.log('Панель управления'),
'/dashboard/settings': () => console.log('Настройки панели')
});
Такой подход упрощает управление структурой SPA и облегчает организацию кода.
1. Простота интеграции Navigo не требует сложной конфигурации, легко подключается через npm или CDN, и минимально влияет на общий размер проекта.
2. Минимальная зависимость от других библиотек Библиотека написана на чистом JavaScript и не зависит от фреймворков, что делает её универсальным решением для любых проектов, включая Vanilla JS.
3. Динамическая маршрутизация Navigo позволяет менять маршруты в процессе работы приложения без перезагрузки страницы. Это особенно важно для SPA с множеством динамически создаваемых страниц.
4. Поддержка параметров и query-параметров Встроенная обработка параметров маршрута и query-параметров упрощает доступ к данным из URL:
router.on('/search/:query', (params, query) => {
console.log(params.query); // значение сегмента
console.log(query.page); // значение query-параметра ?page=2
});
5. Лёгкая работа с хэшем и History API Можно
использовать как хэш-навигацию (hash: true), так и History
API (hash: false) без изменения структуры маршрутов, что
обеспечивает гибкость при деплое.
6. Поддержка обратного перехода и навигации по
истории Методы navigate и back
позволяют программно управлять переходами между страницами, поддерживая
стандартные механизмы браузера:
router.navigate('/about');
router.back();
7. События на изменение маршрута Navigo предоставляет хуки для реагирования на изменение маршрута:
router.hooks({
before: (done, params) => {
console.log('Перед переходом', params);
done();
},
after: (params) => {
console.log('После перехода', params);
}
});
Это облегчает реализацию аутентификации, логирования и других проверок перед показом страницы.
8. Гибкая обработка 404 и fallback-страниц Можно легко определить обработчик для неизвестных маршрутов:
router.notFound(() => {
console.log('Страница не найдена');
});
Navigo хорошо сочетается с компонентными подходами, позволяя связывать каждый маршрут с отдельным компонентом или модулем:
router.on('/profile', () => {
import('./components/Profile.js').then(module => {
module.renderProfile();
});
});
Это снижает начальный вес приложения и позволяет загружать код по мере необходимости.
Navigo сочетает в себе компактность и мощность, предоставляя разработчику все инструменты для управления маршрутизацией без избыточной сложности и зависимостей.