Vue Router — это официальная библиотека маршрутизации для Vue.js, обеспечивающая управление переходами между различными представлениями (views) приложения на стороне клиента без перезагрузки страницы. Клиентская маршрутизация является ключевым компонентом современных одностраничных приложений (SPA), позволяя динамически подгружать компоненты и поддерживать состояние приложения.
Маршрут в Vue Router представляет собой объект с минимум двумя обязательными полями:
const routes = [
{ path: '/', component: Home },
{ path: '/about', component: About }
];
Дополнительно можно использовать следующие свойства:
Для интеграции с приложением Vue создаётся экземпляр маршрутизатора:
import { createRouter, createWebHistory } from 'vue-router';
const router = createRouter({
history: createWebHistory(),
routes
});
export default router;
Подключение маршрутизатора к Vue-приложению осуществляется через
app.use(router).
Vue Router поддерживает динамические сегменты в путях:
{ path: '/user/:id', component: UserProfile, props: true }
:id — параметр маршрута, который может быть получен в
компоненте через this.$route.params.id.props: true позволяет напрямую передавать параметры в
компонент как свойства.Динамические маршруты часто комбинируются с методами
watch или beforeRouteUpdate, чтобы реагировать
на изменения параметров без повторного создания компонента.
Вложенные маршруты создаются с использованием свойства
children:
{
path: '/dashboard',
component: Dashboard,
children: [
{ path: 'stats', component: Stats },
{ path: 'settings', component: Settings }
]
}
<router-view> для отображения дочерних
компонентов.Программная навигация выполняется через методы маршрутизатора:
this.$router.push({ name: 'about' });
this.$router.replace('/contact');
Для шаблонов Vue используются компоненты
<router-link>:
<router-link to="/about">О нас</router-link>
to может быть строкой URL или объектом с именем
маршрута и параметрами.<router-link> автоматически добавляет CSS-класс
router-link-active для активного маршрута.Vue Router предоставляет механизмы контроля доступа и обработки переходов через охранники:
router.beforeEach((to, from, next) => {
if (to.meta.requiresAuth && !isLoggedIn()) {
next('/login');
} else {
next();
}
});
{
path: '/admin',
component: AdminPanel,
beforeEnter: (to, from, next) => {
if (!isAdmin()) next('/');
else next();
}
}
Эти охранники позволяют реализовывать авторизацию, проверку состояния данных и предотвращение потери несохранённых изменений.
Для оптимизации производительности больших SPA используется ленивая загрузка компонентов:
const About = () => import('./components/About.vue');
const routes = [
{ path: '/about', component: About }
];
<router-view>Vue Router позволяет использовать несколько
<router-view> для отображения компонентов в разных
местах страницы:
<router-view name="main"></router-view>
<router-view name="sidebar"></router-view>
{
path: '/dashboard',
components: {
main: DashboardMain,
sidebar: DashboardSidebar
}
}
components вместо component
позволяет указывать несколько областей отображения.<router-view> связывается с компонентом по
имени.Свойство meta позволяет хранить дополнительную
информацию о маршруте:
{
path: '/profile',
component: UserProfile,
meta: { requiresAuth: true, title: 'Профиль' }
}
to.meta в
охранниках или компонентах.Vue Router управляет историей браузера и поддерживает настройку поведения прокрутки:
const router = createRouter({
history: createWebHistory(),
routes,
scrollBehavior(to, from, savedPosition) {
if (savedPosition) return savedPosition;
return { top: 0 };
}
});
Клиентская маршрутизация в Vue Router позволяет строить SPA с:
Эта система делает Vue Router мощным инструментом для организации структуры больших приложений, обеспечивая плавный пользовательский опыт и масштабируемую архитектуру.