Vue Router предоставляет мощный и гибкий механизм для навигации внутри приложений на Vue.js. Одним из ключевых аспектов маршрутизации является генерация ссылок, которая позволяет создавать ссылки на маршруты динамически, обеспечивая синхронизацию URL с состоянием приложения и предотвращая ручное управление адресной строкой.
<router-link>Основной способ генерации ссылок в Vue Router — это компонент
<router-link>. Он автоматически создаёт HTML-ссылку
(<a>), которая интегрирована с системой
маршрутизации:
<router-link to="/about">О нас</router-link>
Здесь to может быть строкой (путь
маршрута) или объектом, задающим более сложные
параметры:
<router-link :to="{ name: 'user', params: { id: 42 } }">Профиль пользователя</router-link>
Особенности использования:
name, Vue Router ищет маршрут по
имени и автоматически подставляет параметры.params требует, чтобы маршрут имел
соответствующие динамические сегменты, например:const routes = [
{ path: '/user/:id', name: 'user', component: UserProfile }
];
/user/42.<router-link :to="{ name: 'product', params: { id: product.id } }">
{{ product.name }}
</router-link>
query:<router-link :to="{ path: '/search', query: { q: 'Vue Router' } }">
Поиск
</router-link>
Это создаст URL вида: /search?q=Vue+Router.
Абсолютные и относительные ссылки
path.<router-link to="settings">Настройки</router-link>
Если текущий маршрут /user/42, ссылка превратится в
/user/42/settings.
Помимо <router-link>, ссылки можно формировать
программно через методы router.push и
router.replace:
this.$router.push({ name: 'user', params: { id: 42 } });
this.$router.replace({ path: '/home' });
Разница между push и replace:
push добавляет запись в историю браузера, позволяя
вернуться назад.replace заменяет текущую запись, не создавая новой в
истории.Использование объекта позволяет автоматически учитывать параметры маршрута и query:
this.$router.push({
name: 'search',
query: { q: this.searchTerm, page: this.page }
});
active-class и стилизация ссылокVue Router автоматически добавляет класс
router-link-active активной ссылке. Его можно настроить
через active-class:
<router-link to="/about" active-class="active-link">О нас</router-link>
Для вложенных маршрутов используется класс
router-link-exact-active, который активен только при точном
совпадении URL.
Для внешних ссылок <router-link> не используется;
достаточно обычного <a>:
<a :href="externalUrl" target="_blank">Внешний ресурс</a>
Для динамической генерации маршрутов внутри приложения удобно использовать вычисляемые свойства:
<router-link :to="userProfileLink">Профиль</router-link>
<script>
export default {
props: ['userId'],
computed: {
userProfileLink() {
return { name: 'user', params: { id: this.userId } };
}
}
}
</script>
replace и appendreplace используется для замены текущего маршрута при
переходе.append добавляет путь к текущему маршруту, что особенно
полезно при вложенных маршрутах:<router-link :to="{ path: 'settings' }" append>Настройки</router-link>
Если текущий путь /profile, итоговый URL будет
/profile/settings.
<router-link> — основной способ генерации ссылок
внутри SPA.name, params и
query делает маршрутизацию гибкой и безопасной.router.push и
router.replace позволяют генерировать ссылки динамически и
управлять историей.active-class и
router-link-exact-active повышает UX.append и относительные пути позволяют создавать
вложенные ссылки без ручной конкатенации.Эти возможности делают Vue Router не просто инструментом маршрутизации, а полноценным механизмом динамической генерации ссылок и управления навигацией внутри приложения.