Navigo — это легковесная библиотека для маршрутизации на клиенте в JavaScript, которая поддерживает именованные параметры в URL. Именованные параметры позволяют динамически извлекать части маршрута и использовать их в обработчиках для отображения контента или выполнения логики приложения.
Именованный параметр определяется с помощью двоеточия :
перед названием переменной внутри маршрута. Например:
const router = new Navigo('/');
router.on('/user/:id', function (params) {
console.log(params.id);
});
В этом примере :id — это именованный параметр. Если
пользователь перейдёт по адресу /user/42, объект
params будет содержать { id: "42" }.
Ключевые моменты:
Маршруты могут содержать несколько параметров одновременно. Это полезно, когда URL включает несколько динамических сегментов:
router.on('/post/:postId/comment/:commentId', function (params) {
console.log(params.postId, params.commentId);
});
Для URL /post/7/comment/15 объект params
будет равен:
{ postId: "7", commentId: "15" }
Navigo поддерживает опциональные параметры, которые
обозначаются с помощью ? внутри маршрута:
router.on('/search/:query?', function (params) {
console.log(params.query);
});
/search/javascript
params.query будет "javascript"./search/ params.query
будет undefined.Это позволяет создавать маршруты, которые обрабатывают как наличие параметра, так и его отсутствие, без необходимости создавать отдельные маршруты для каждого варианта.
Именованные параметры можно ограничивать регулярными выражениями, чтобы контролировать допустимые значения:
router.on('/product/:id(\\d+)', function (params) {
console.log(params.id);
});
:id(\\d+) разрешает только числовые
значения./product/123 будет корректно обработан, а
/product/abc — нет.Регулярные выражения позволяют создавать более строгие маршруты, что особенно важно для REST-подобных интерфейсов.
Navigo позволяет использовать метод navigate с
параметрами для генерации URL. Можно передать объект с именованными
параметрами:
router.navigate('/user/:id', { id: 42 });
После этого браузер перейдёт на URL /user/42.
Именованные параметры удобно использовать в вложенных маршрутах, где один маршрут является частью другого:
router.on('/user/:userId', function (params) {
console.log('User ID:', params.userId);
})
.on('/user/:userId/profile', function (params) {
console.log('Profile of user:', params.userId);
});
/user/5./user/5/profile.userId автоматически передаются в
обработчики.Если приложение использует хэш-маршрутизацию
(#), именованные параметры работают точно так же:
const router = new Navigo('/', { hash: true });
router.on('/page/:name', function (params) {
console.log(params.name);
});
router.navigate('/page/home');
/#/page/home.params.name равен "home".Именованные параметры в Navigo делают маршрутизацию гибкой и позволяют создавать динамические интерфейсы, где URL напрямую управляет содержимым страницы. Они являются фундаментальной частью построения одностраничных приложений с чистыми и поддерживаемыми маршрутами.