Hash-режим в библиотеке Navigo используется для
управления маршрутизацией в одностраничных приложениях (SPA), когда URL
изменяется без перезагрузки страницы. В отличие от режима History,
hash-режим опирается на фрагмент URL после символа #, что
обеспечивает совместимость со старыми браузерами и серверами, не
настроенными на работу с History API.
Для создания экземпляра маршрутизатора с hash-режимом используется
параметр useHash при инициализации:
import Navigo from 'navigo';
const router = new Navigo('/', { hash: true });
Пояснения к параметрам:
'/' — корневой путь приложения, от которого строятся
маршруты.{ hash: true } — включает hash-режим. Все пути будут
обрабатываться через фрагмент URL после #.После этого переходы по маршрутам будут использовать формат:
http://example.com/#/about
http://example.com/#/contact
Маршруты добавляются стандартным способом с помощью метода
on. Hash-режим не требует изменений в синтаксисе
маршрутов:
router
.on('/', () => {
console.log('Главная страница');
})
.on('/about', () => {
console.log('Страница "О нас"');
})
.on('/contact', () => {
console.log('Контакты');
});
В hash-режиме Navigo автоматически отслеживает изменения фрагмента URL и вызывает соответствующий обработчик.
Для программного перехода используется метод
navigate:
router.navigate('/about');
В hash-режиме Navigo преобразует путь автоматически:
/about → #/about
Это позволяет строить SPA без необходимости перезагружать страницу.
Hash-режим поддерживает несколько дополнительных настроек через
объект options при инициализации:
const router = new Navigo(null, { hash: true, hashPrefix: '!' });
hashPrefix — добавляет префикс после #.
Например, при hashPrefix: '!' URL будет выглядеть так:http://example.com/#!/about
Использование префикса часто применяется для совместимости с SEO-движками и сторонними сканерами.
updateHash-режим позволяет отслеживать изменения URL без перезагрузки
страницы через событие update:
router.updatePageLinks();
Метод updatePageLinks ищет все ссылки с атрибутом
href и автоматически подключает их к маршрутизатору. Для
hash-режима это особенно удобно, так как ссылки вида:
<a href="#/contact">Контакты</a>
будут корректно обрабатываться Navigo без дополнительного кода.
#, что менее красиво для пользователей и
SEO.hashPrefix и
серверные редиректы для старых ссылок.Hash-режим в Navigo обеспечивает надежный и простой способ маршрутизации SPA, позволяя управлять состоянием приложения через URL без перезагрузки страницы и без сложной настройки сервера.