Статические пути в Universal Router представляют
собой маршруты, которые точно совпадают с указанным URL. Они не содержат
динамических сегментов, параметров или регулярных выражений. Такой тип
маршрутов используется для страниц с фиксированными адресами, например
/about, /contact или /home.
Пример определения статического маршрута:
import UniversalRouter from 'universal-router';
const routes = [
{
path: '/about',
action: () => 'Страница О нас'
},
{
path: '/contact',
action: () => 'Страница Контакты'
}
];
const router = new UniversalRouter(routes);
router.resolve('/about').then(result => console.log(result)); // "Страница О нас"
router.resolve('/contact').then(result => console.log(result)); // "Страница Контакты"
В этом примере path задаётся как строка без каких-либо
переменных. Universal Router сравнивает URL запроса с
точной строкой path и вызывает соответствующую функцию
action.
Universal Router различает пути с и без завершающего слеша.
/about и /about/ считаются разными
маршрутами.strict: false при создании
маршрута:const routes = [
{
path: '/about',
strict: false,
action: () => 'Страница О нас'
}
];
С strict: false один маршрут будет совпадать как с
/about, так и с /about/.
Статические маршруты можно вкладывать друг в друга, создавая дерево маршрутов. Это удобно для организации страниц с общей базой URL.
const routes = [
{
path: '/dashboard',
action: () => 'Главная панель',
children: [
{
path: '/stats',
action: () => 'Статистика'
},
{
path: '/settings',
action: () => 'Настройки'
}
]
}
];
const router = new UniversalRouter(routes);
router.resolve('/dashboard/stats').then(console.log); // "Статистика"
router.resolve('/dashboard/settings').then(console.log); // "Настройки"
При вложении Universal Router автоматически объединяет пути родителей и детей, создавая полный путь.
Universal Router проверяет маршруты по порядку их определения. Статические пути всегда имеют высокий приоритет перед динамическими.
const routes = [
{ path: '/user/:id', action: () => 'Профиль пользователя' },
{ path: '/user/admin', action: () => 'Админская панель' }
];
const router = new UniversalRouter(routes);
router.resolve('/user/admin').then(console.log); // "Профиль пользователя"
В приведённом примере /:id сработает первым, так как
определяется раньше конкретного пути /user/admin. Чтобы
изменить поведение, статические маршруты следует располагать
выше динамических:
const routes = [
{ path: '/user/admin', action: () => 'Админская панель' },
{ path: '/user/:id', action: () => 'Профиль пользователя' }
];
router.resolve('/user/admin').then(console.log); // "Админская панель"
Если ни один статический маршрут не совпадает с URL, Universal Router
возвращает undefined или можно настроить маршрут по
умолчанию с помощью '*':
const routes = [
{ path: '/home', action: () => 'Главная' },
{ path: '*', action: () => '404 Страница не найдена' }
];
router.resolve('/unknown').then(console.log); // "404 Страница не найдена"
Маршрут с '*' работает как catch-all и обрабатывает все
URL, которые не подходят под статические пути.
strict: false для маршрутов, где не
критично наличие или отсутствие завершающего слеша.'*' для обработки
неопределённых URL, чтобы избежать ошибок при навигации.Статические пути — фундаментальная часть маршрутизации в Universal Router, обеспечивающая точное совпадение URL и быстрый доступ к конкретным страницам без необходимости парсинга параметров.