Для работы с маршрутизацией в Vue.js используется библиотека Vue Router. Подключение начинается с установки через npm или yarn:
npm install vue-router@4
или
yarn add vue-router@4
После установки создается отдельный файл для конфигурации маршрутов,
например router.js или index.js внутри папки
router. Пример базовой конфигурации:
import { createRouter, createWebHistory } from 'vue-router';
import Home from '../views/Home.vue';
import About from '../views/About.vue';
const routes = [
{ path: '/', name: 'Home', component: Home },
{ path: '/about', name: 'About', component: About }
];
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes
});
export default router;
Подключение роутера к приложению осуществляется в основном файле
main.js или main.ts:
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
const app = createApp(App);
app.use(router);
app.mount('#app');
Vue Devtools предоставляет визуальный инструмент для
отладки приложений на Vue.js, включая работу с маршрутизатором. После
установки расширения Devtools в браузере и запуска приложения, роутер
автоматически интегрируется, если используется
Vue Router 4.
Возможности Devtools для роутера:
Отслеживание переходов между маршрутами Devtools
отображает текущий маршрут, его имя (name), путь
(path) и параметры (params). Это позволяет
видеть, какие маршруты активны в каждый момент времени.
Просмотр истории навигации Вкладка Router показывает стек переходов между маршрутами, включая действия пользователя, которые инициировали переход.
Анализ динамических параметров и query Любые
изменения параметров маршрута (:id, :slug) и
query-параметров (?page=2) видны в реальном времени. Можно
проверять их соответствие ожиданиям без логирования в консоль.
Отслеживание навигационных guard Devtools
позволяет видеть срабатывание глобальных, локальных и пер-роутовых
guard, таких как beforeEach, beforeResolve и
afterEach.
Динамические компоненты позволяют загружать только необходимые части приложения. Это снижает размер бандла и улучшает производительность:
const routes = [
{
path: '/',
name: 'Home',
component: () => import('../views/Home.vue')
},
{
path: '/profile/:id',
name: 'Profile',
component: () => import('../views/Profile.vue'),
props: true
}
];
Особенности отображения в Devtools:
Программная навигация:
this.$router.push({ name: 'Profile', params: { id: 123 } });
this.$router.replace({ path: '/about' });
Навигация с query-параметрами:
this.$router.push({ path: '/search', query: { q: 'vue' } });
В Devtools видно точное соответствие между параметрами и query, а также момент их изменения.
Реактивное отслеживание текущего маршрута:
import { useRoute } from 'vue-router';
export default {
setup() {
const route = useRoute();
watch(route, (newRoute) => {
console.log('Текущий маршрут изменился:', newRoute.fullPath);
});
}
};
Это позволяет синхронизировать данные компонента с маршрутом без дополнительных событий.
Глобальные guard:
router.beforeEach((to, from, next) => {
if (!auth.isLoggedIn && to.meta.requiresAuth) {
next({ name: 'Login' });
} else {
next();
}
});
Локальные guard в компонентах:
export default {
beforeRouteEnter(to, from, next) {
console.log('Перед входом в маршрут:', to.name);
next();
}
};
Преимущества отображения в Devtools:
push и replace, которые могут приводить
к дублированию запросов или рендеров.Маршрутизатор тесно взаимодействует с глобальным состоянием:
import { useUserStore } from '@/stores/user';
router.beforeEach((to, from, next) => {
const userStore = useUserStore();
if (!userStore.isLoggedIn && to.meta.requiresAuth) {
next({ name: 'Login' });
} else {
next();
}
});
Devtools позволяет отслеживать состояние хранилища и текущий маршрут одновременно, что значительно упрощает диагностику проблем с авторизацией и доступом к защищенным страницам.