Для начала работы с библиотекой Navigo необходимо подключить её к проекту. Наиболее распространённые способы: через npm или CDN.
Через npm:
npm install navigo
Затем импорт в проект:
import Navigo from 'navigo';
Через CDN:
<script src="https://unpkg.com/navigo@8.11.1/lib/navigo.min.js"></script>
После подключения можно создавать экземпляр роутера:
const router = new Navigo('/', { hash: true });
Здесь первый параметр '/' задаёт базовый путь
приложения, а опция hash: true включает hash-роутинг.
Navigo поддерживает несколько стратегий маршрутизации, которые определяют, как библиотека обрабатывает изменения URL.
History API позволяет использовать обычные URL без
#.
Пример настройки:
const router = new Navigo('/', { hash: false });
Особенности:
pushState и
replaceState./about.Использование с маршрутами:
router
.on('/home', () => {
console.log('Главная страница');
})
.on('/about', () => {
console.log('О нас');
})
.resolve();
Hash-роутинг использует # в URL. Пример:
/index.html#/about.
Настройка:
const router = new Navigo('/', { hash: true });
Особенности:
Пример маршрута:
router
.on('/contact', () => {
console.log('Контакты');
})
.resolve();
Bазовый путь определяет префикс, который будет учитываться при обработке всех маршрутов.
Пример:
const router = new Navigo('/app', { hash: false });
/app/home будет сопоставлен с маршрутом
/home.Navigo поддерживает динамические сегменты URL, которые позволяют создавать маршруты с переменными.
Пример:
router.on('/user/:id', ({ data }) => {
console.log('ID пользователя:', data.id);
});
:id – это параметр маршрута.data.Можно использовать несколько параметров:
router.on('/product/:category/:id', ({ data }) => {
console.log(data.category, data.id);
});
Основные опции, которые влияют на стратегию роутинга:
hash – включение hash-роутинга
(true) или History API (false).root – базовый путь приложения.linksSelector – CSS-селектор ссылок,
на которые подписывается роутер для автоматической навигации.strategy – позволяет настраивать
обработку URL (например, ALL для полного сопоставления
маршрутов).Пример использования опций:
const router = new Navigo('/', {
hash: false,
linksSelector: 'a',
strategy: 'ALL'
});
Navigo позволяет задавать коллбэки для действий при активации маршрута, а также для маршрутов по умолчанию.
router
.on('/dashboard', () => {
console.log('Дашборд загружен');
})
.notFound(() => {
console.log('Маршрут не найден');
})
.resolve();
on – назначает обработчик маршрута.notFound – задаёт действие, если маршрут не
найден.resolve – инициирует проверку текущего URL и вызывает
соответствующий маршрут.Для удобства можно настраивать редиректы между маршрутами:
router.on('/home', () => {
console.log('Главная');
});
router.on('/start', () => {
router.navigate('/home');
});
navigate позволяет программно изменять URL и запускать
сопоставление маршрутов.Для оптимизации SPA можно загружать код страниц по мере необходимости:
router.on('/settings', async () => {
const module = await import('./settings.js');
module.render();
});
Для сложного SPA рекомендуется комбинировать:
root) для
подкаталогов.Пример комплексной настройки:
const router = new Navigo('/app', { hash: false });
router
.on('/home', () => console.log('Главная'))
.on('/user/:id', ({ data }) => console.log('Пользователь', data.id))
.on('/settings', async () => {
const module = await import('./settings.js');
module.render();
})
.notFound(() => console.log('Страница не найдена'))
.resolve();
Такое сочетание позволяет полностью контролировать стратегию роутинга и поведение SPA, обеспечивая гибкость и масштабируемость приложения.