Vue.js предоставляет мощную систему маршрутизации через библиотеку
Vue Router, которая позволяет организовывать навигацию
в одностраничных приложениях (SPA). Основными инструментами для работы с
маршрутами являются компоненты router-link и
router-view.
router-link:
создание ссылок для навигацииКомпонент router-link служит для создания навигационных
ссылок, аналогичных <a> в обычном HTML, но с полной
интеграцией в систему маршрутов Vue.js.
Синтаксис:
<router-link to="/about">О проекте</router-link>
to — путь маршрута, на который будет
происходить переход. Может быть строкой или объектом.<router-link :to="{ name: 'user', params: { id: 123 }}">Профиль пользователя</router-link>
При использовании объекта to можно указывать:
name — имя маршрута, заданное при конфигурации
маршрутов.params — параметры маршрута.query — строка запроса (?key=value).Активные классы:
router-link автоматически добавляет CSS-классы для
активных ссылок:
router-link-active — применяется к ссылке, когда путь
совпадает с текущим маршрутом.router-link-exact-active — применяется, когда путь
точно совпадает с маршрутом.Можно переопределить классы:
<router-link to="/about" active-class="active" exact-active-class="exact-active">О проекте</router-link>
Использование слотов:
router-link поддерживает пользовательские элементы через
слоты:
<router-link to="/home">
<button>На главную</button>
</router-link>
При этом переход сохраняется, а оформление ссылки можно полностью кастомизировать.
router-view:
отображение компонентов маршрутовКомпонент router-view выполняет роль контейнера
для компонентов, которые рендерятся в зависимости от текущего
маршрута.
Базовое использование:
<template>
<div>
<router-view></router-view>
</div>
</template>
Когда путь изменяется, Vue Router подставляет в
router-view соответствующий компонент, указанный в
конфигурации маршрутов:
const routes = [
{ path: '/', component: Home },
{ path: '/about', component: About },
];
Именованные router-view:
Можно использовать несколько router-view с разными
именами для одновременного отображения нескольких компонентов:
<router-view name="main"></router-view>
<router-view name="sidebar"></router-view>
Конфигурация маршрута с именованными компонентами:
const routes = [
{
path: '/dashboard',
components: {
main: DashboardMain,
sidebar: DashboardSidebar,
}
}
];
Динамическая подстановка компонентов:
router-view автоматически обновляет содержимое при
изменении маршрута, что позволяет строить динамические интерфейсы без
перезагрузки страницы. Дополнительно можно использовать
transition для анимации смены компонентов:
<transition name="fade" mode="out-in">
<router-view></router-view>
</transition>
router-link и router-viewКомбинация router-link и router-view
позволяет создавать полноценную навигацию:
router-link формирует маршруты и управляет
переходами.router-view отображает соответствующие компоненты.Пример с меню и основной областью:
<template>
<div>
<nav>
<router-link to="/">Главная</router-link>
<router-link to="/about">О проекте</router-link>
</nav>
<router-view></router-view>
</div>
</template>
При клике на ссылку содержимое в <router-view>
заменяется на компонент, связанный с маршрутом.
Кроме использования router-link, переходы можно
выполнять программно через объект маршрутизатора:
this.$router.push('/about');
this.$router.replace({ name: 'user', params: { id: 123 } });
Разница:
push — добавляет маршрут в историю браузера.replace — заменяет текущий маршрут, не сохраняя
предыдущий в истории.router-link вместо
<a> для внутренних ссылок, чтобы избежать полной
перезагрузки страницы.router-view.router-view поддерживает вложенные маршруты,
что позволяет строить сложные интерфейсы с иерархией страниц.Эти компоненты являются фундаментом маршрутизации в Vue.js и позволяют создавать динамические и отзывчивые интерфейсы с минимальными усилиями.