В библиотеке Navigo для работы с маршрутизацией в JavaScript константы и перечисления играют ключевую роль в управлении поведением роутера и упрощении поддержки кода. Несмотря на то, что Navigo не предоставляет собственных сложных перечислений, разработчик может эффективно использовать встроенные константы и создавать собственные перечисления для управления маршрутами, опциями и событиями.
Константы в Navigo применяются для хранения неизменяемых значений, таких как конфигурационные параметры роутера, имена событий и специальные символы маршрутов. Основные примеры:
Navigo.hash — строка "#"
или пустая, в зависимости от того, используется ли
хеш-маршрутизация.Navigo.root — корневой путь
приложения, который задаётся при создании экземпляра роутера и
используется для построения всех маршрутов.Navigo.RESOLVE_ROUTE — служебная
константа для внутреннего механизма разрешения маршрута.Использование констант позволяет:
Пример создания и использования констант:
const ROUTES = {
HOME: "/",
ABOUT: "/about",
CONTACT: "/contact"
};
const router = new Navigo(ROUTES.HOME);
router.on(ROUTES.HOME, () => {
console.log("Главная страница");
});
router.on(ROUTES.ABOUT, () => {
console.log("Страница О нас");
});
В этом примере ROUTES выступает в роли
собственного перечисления маршрутов.
Navigo использует несколько ключевых событий, с которыми можно работать при настройке роутера:
on — добавление обработчика
маршрута.resolve — принудительное разрешение
текущего URL.notFound — обработка случаев, когда
маршрут не найден.Для удобства можно определить собственное перечисление событий:
const ROUTER_EVENTS = {
ROUTE_FOUND: "routeFound",
ROUTE_NOT_FOUND: "routeNotFound",
ROUTE_RESOLVED: "routeResolved"
};
Это облегчает обработку и отладку событий без риска опечаток в строковых значениях.
При создании маршрутов в Navigo можно передавать объект с опциями. Для избежания дублирования строковых ключей часто используют собственные перечисления:
const ROUTE_OPTIONS = {
USE_HASH: true,
STRATEGY: "ALL" // Возможные значения: "ALL", "LEAF", "BRANCH"
};
const router = new Navigo("/", { hash: ROUTE_OPTIONS.USE_HASH });
Применение перечислений делает код более читаемым и уменьшает вероятность ошибок.
Для крупных приложений удобно группировать маршруты по функциональным модулям:
const ROUTES = {
AUTH: {
LOGIN: "/login",
REGISTER: "/register"
},
DASHBOARD: {
MAIN: "/dashboard",
SETTINGS: "/dashboard/settings"
}
};
router.on(ROUTES.AUTH.LOGIN, () => {
console.log("Страница логина");
});
router.on(ROUTES.DASHBOARD.SETTINGS, () => {
console.log("Настройки дашборда");
});
Такое структурирование позволяет:
const ROUTES = {
HOME: "/",
ABOUT: "/about",
CONTACT: "/contact"
};
const ROUTER_EVENTS = {
ROUTE_FOUND: "routeFound",
ROUTE_NOT_FOUND: "routeNotFound"
};
const router = new Navigo("/", { hash: true });
router.on(ROUTES.HOME, () => console.log("Главная страница"));
router.on(ROUTES.ABOUT, () => console.log("О нас"));
router.on(ROUTES.CONTACT, () => console.log("Контакты"));
router.notFound(() => console.log("Маршрут не найден"));
router.resolve();
В этом примере константы ROUTES и
ROUTER_EVENTS упрощают управление
маршрутизацией, обеспечивают модульность и предотвращают ошибки при
расширении приложения.
Использование констант и перечислений в Navigo является базовым, но критически важным инструментом для поддерживаемого и масштабируемого кода маршрутизатора.