Vue Router — официальная библиотека маршрутизации для Vue.js, обеспечивающая управление навигацией между компонентами и страницами в приложении. Основное внимание при работе с Vue Router уделяется его версии, так как разные версии библиотеки строго привязаны к конкретным версиям Vue, что напрямую влияет на доступные возможности и синтаксис.
Vue Router 3.x Совместим с Vue
2.x. Используется в большинстве приложений на Vue 2,
поддерживает все стандартные возможности маршрутизации: вложенные
маршруты, ленивую загрузку компонентов, динамические сегменты и переходы
навигации. Основные методы и свойства включают mode,
routes, beforeEach, afterEach.
Пример инициализации:
import Vue from 'vue';
import VueRouter from 'vue-router';
import Home from './components/Home.vue';
import About from './components/About.vue';
Vue.use(VueRouter);
const routes = [
{ path: '/', component: Home },
{ path: '/about', component: About }
];
const router = new VueRouter({
mode: 'history',
routes
});
new Vue({
router,
render: h => h(App)
}).$mount('#app');Vue Router 4.x Совместим с Vue
3.x. Основные изменения связаны с использованием Composition
API и поддержкой функционального подхода к маршрутам. Конфигурация и
методы несколько отличаются: используется createRouter и
createWebHistory вместо new VueRouter. Пример
конфигурации:
import { createRouter, createWebHistory } from 'vue-router';
import Home from './components/Home.vue';
import About from './components/About.vue';
const routes = [
{ path: '/', component: Home },
{ path: '/about', component: About }
];
const router = createRouter({
history: createWebHistory(),
routes
});
export default router;
Отличительные возможности Vue Router 4.x включают:
useRouter,
useRoute)router.beforeEach,
router.afterEach) с упрощённой типизацией| Характеристика | Vue Router 3.x (Vue 2) | Vue Router 4.x (Vue 3) |
|---|---|---|
| Создание роутера | new VueRouter({...}) |
createRouter({...}) |
| История навигации | mode: 'history' |
createWebHistory() |
| Хуки маршрутизации | Глобальные через router.beforeEach |
Глобальные, с Composition API поддержкой |
| Интеграция с компонентами | Опции компонентов (this.$router) |
Composition API (useRouter()) |
| TypeScript | Ограниченная поддержка | Полная поддержка, типизация маршрутов |
| Ленивая загрузка | component: () => import('./Comp.vue') |
То же, с поддержкой динамических импортов |
Прямой перенос кода с Vue Router 3 на Vue Router 4 невозможен без изменений синтаксиса.
Главные точки миграции:
createRouter вместо
new VueRoutercreateWebHistory вместо
mode: 'history'this.$router и this.$route на
Composition API функцииВерсии Vue Router напрямую влияют на подход к маршрутизации и структуре приложения. Например, в Vue 3 и Vue Router 4 рекомендуется использовать Composition API для навигации и доступа к состоянию маршрута:
import { useRouter, useRoute } from 'vue-router';
import { defineComponent } from 'vue';
export default defineComponent({
setup() {
const router = useRouter();
const route = useRoute();
const goHome = () => {
router.push('/');
};
return { route, goHome };
}
});
Такой подход облегчает тестирование компонентов, уменьшает связность и делает код более декларативным.
Версия Vue Router — ключевой элемент архитектуры Vue-приложения, и правильный выбор обеспечивает стабильность, расширяемость и соответствие современным стандартам разработки.