Vue Router — это официальная библиотека маршрутизации для фреймворка Vue.js, которая обеспечивает управление навигацией между компонентами в одностраничных приложениях (SPA). История Vue Router тесно связана с развитием самого Vue.js и с требованиями современных веб-приложений.
Первая стабильная версия Vue Router была выпущена в 2014 году, вскоре после выхода Vue.js 1.0. Основной задачей ранней версии было предоставление простой системы маршрутизации для одностраничных приложений. Она позволяла связывать URL с компонентами и обновлять представление без полной перезагрузки страницы.
В ранних версиях поддерживались:
#) в URL для управления навигацией. Это позволяло избежать
необходимости конфигурации сервера.path и
component./user/:id).Пример базовой конфигурации Vue Router 0.x–1.x:
const router = new VueRouter({
routes: [
{ path: '/home', component: Home },
{ path: '/about', component: About },
{ path: '/user/:id', component: User }
]
});
new Vue({
el: '#app',
router
});
С выходом Vue.js 2.0 в 2016 году возникла необходимость в более мощной и гибкой маршрутизации. Vue Router 2.x предложил следующие улучшения:
pushState) для чистых URL без хэшей.beforeEnter,
beforeRouteEnter, beforeRouteUpdate,
beforeRouteLeave для контроля переходов между маршрутами и
защиты приватных страниц.Пример вложенных маршрутов:
const router = new VueRouter({
mode: 'history',
routes: [
{ path: '/', component: Home },
{
path: '/user/:id',
component: User,
children: [
{ path: 'profile', component: UserProfile },
{ path: 'posts', component: UserPosts }
]
}
]
});
Vue Router 3.x был разработан для полной совместимости с Vue.js 2.x и активно использовался в крупных приложениях. Основные изменения включали:
Пример кастомного управления прокруткой:
const router = new VueRouter({
routes: [...],
scrollBehavior(to, from, savedPosition) {
if (savedPosition) {
return savedPosition;
} else {
return { x: 0, y: 0 };
}
}
});
С релизом Vue 3 появилась необходимость полной переработки маршрутизатора. Vue Router 4.x был создан с нуля, учитывая новые возможности Composition API, реактивности и TypeScript. Основные нововведения:
setup().Пример использования Composition API с Vue Router 4:
import { useRouter, useRoute } from 'vue-router';
export default {
setup() {
const router = useRouter();
const route = useRoute();
function goToUser(id) {
router.push({ name: 'user', params: { id } });
}
return { route, goToUser };
}
};
Эволюция Vue Router демонстрирует стремление библиотеки к гибкости, производительности и удобству разработчика, позволяя строить масштабируемые и динамичные одностраничные приложения.