Navigo — это легковесная библиотека для клиентского роутинга в JavaScript, обеспечивающая простую настройку маршрутов и управление состоянием приложения на стороне браузера. В отличие от более крупных фреймворков, таких как React Router или Vue Router, Navigo ориентирован на минимализм и гибкость, предоставляя лишь базовый набор инструментов для работы с URL, параметрами и колбэками.
Создание роутера в Navigo выглядит следующим образом:
import Navigo from 'navigo';
const router = new Navigo('/', { hash: true });
router.on('/home', () => {
console.log('Главная страница');
});
router.on('/about', () => {
console.log('О нас');
});
router.resolve();
Здесь видно, что роутинг строится вокруг метода on,
который принимает путь и функцию-обработчик. Navigo использует либо
history API, либо hash routing, что
обеспечивает совместимость со старыми браузерами.
React Router — мощный инструмент для SPA на React, поддерживающий вложенные маршруты, динамическую подгрузку компонентов и переходы с сохранением состояния. Основные отличия:
и
. Navigo работает с любым JS-кодом, не
привязан к UI-фреймворку.Пример условного маршрута в Navigo:
router.on('/profile/:userId', ({ userId }) => {
fetch(`/api/user/${userId}`)
.then(res => res.json())
.then(data => renderProfile(data));
});
Vue Router предлагает декларативный подход и глубокую интеграцию с Vue. Отличительные моменты:
import(). В Navigo
необходимо реализовать динамический импорт вручную.beforeEach, beforeResolve,
afterEach для контроля переходов. Navigo предоставляет лишь
базовую возможность в обработчиках маршрутов.Пример динамической загрузки в Navigo:
router.on('/dashboard', () => {
import('./dashboard.js').then(module => module.initDashboard());
});
Существуют альтернативы типа Page.js, Director, Navigo выделяется компактностью и простотой API:
Пример middleware-подобного поведения в Navigo:
function authGuard(done) {
if (isLoggedIn()) done();
else router.navigate('/login');
}
router.on('/dashboard', () => authGuard(() => renderDashboard()));
Преимущества:
Недостатки:
Navigo подходит для:
Для крупных приложений с вложенными маршрутами, ленивой загрузкой компонентов и сложными переходами лучше рассматривать React Router или Vue Router.