Маршруты во Vue.js могут иметь имена. Используя имена маршрутов в дальнейшем мы можем, к примеру, привязывать пути ссылок к этим маршрутам.
Для установки имени в определении маршрута используется свойство name:
{ path: '/', component: Home, name: 'Home' }
Например, определим следующую веб-страницу:
<!DOCTYPE html> <html> <head> <title>Маршрутизация Vue.js</title> <meta charset="utf-8" /> <style> a{padding: 5px;} a.router-link-active, li.router-link-active>a { color: red; } </style> </head> <body> <div id="app"> <div><router-link to="/" exact>Главная</router-link></div> <router-view></router-view> </div> <script src="https://unpkg.com/vue@2.7.14/dist/vue.js"></script> <script src="https://unpkg.com/vue@2.7.14/dist/vue.js-router/dist/vue-router.js"></script> <script> const NotFound = { template: '<h2>Страница не найдена</h2>' } const Home = { template: `<div><h2>Главная</h2> <ul> <li><router-link :to="{ name: 'products', params: { id: 1 }}">Товар 1</router-link></li> <li><router-link :to="{ name: 'products', params: { id: 2 }}">Товар 2</router-link></li> <li><router-link :to="{ name: 'products', params: { id: 3 }}">Товар 3</router-link></li> <li><router-link :to="{ name: 'products', params: { id: 4 }}">Товар 4</router-link></li> </ul></div>` } const Products = { template: '<h2>Товар {{$route.params.id}}</h2>' } const routes = [ { path: '/', component: Home }, { path: '/products/:id', component: Products, name: 'products' }, { path: '*', component: NotFound } ]; const router = new VueRouter({ mode: 'history', routes: routes }); new Vue({ el: '#app', router: router }) </script> </body> </html>
Здесь используется именованный маршрут Products. В шаблоне объекта Vue определен ряд ссылок, которые привязаны к данному маршруту:
<router-link :to="{ name: 'products', params: { id: 1 }}">Товар 1</router-link>
Для установки привязки атрибут v-bind:to
(или просто :to
) принимает объект, в котором параметр name представляет имя маршрута,
а параметр params применяется для установки значений параметров маршрута (если маршрут использует параметры).
В итоге также будут создаваться ссылки, но теперь с привязкой к маршруту:
Какое преимущество у именованных маршрутов? Если, к примеру, мы захотим изменить путь, который используется маршрутом, то после измения пути не надо будет менять ссылки, которые привязаны к этому маршруту. Как в данном случае четыре ссылки привязаны к одному маршруту. Если бы маршрут был бы неименованным, то при изменении его пути (без изменения параметров) пришлось бы менять все четыре ссылки. А с именованным маршрутом не надо менять адрес создаваемых ссылок, поскольку они автоматически привязаны к этому маршруту.