vue-router
When to use this skill
Use this skill whenever the user wants to:
- Configure routing in Vue 2 or Vue 3 projects
- Implement dynamic routes, nested routes, and named routes
- Set up navigation guards (beforeEach, beforeResolve, afterEach)
- Use programmatic navigation with
router.push,router.replace - Implement lazy-loaded routes for code splitting
- Handle route meta fields for permissions and layout control
How to use this skill
Workflow
- Identify the Vue version (Vue 2 uses Vue Router 3.x, Vue 3 uses Vue Router 4.x)
- Configure routes with the appropriate API
- Add navigation guards for authentication and authorization
- Implement lazy loading for large page components
1. Vue Router 4 (Vue 3) Setup
import { createRouter, createWebHistory } from 'vue-router';
const routes = [
{ path: '/', component: () => import('./views/Home.vue') },
{ path: '/users/:id', component: () => import('./views/UserDetail.vue'), props: true },
{
path: '/admin',
component: () => import('./views/Admin.vue'),
meta: { requiresAuth: true },
children: [
{ path: 'dashboard', component: () => import('./views/AdminDashboard.vue') },
],
},
];
const router = createRouter({
history: createWebHistory(),
routes,
});
// Navigation guard
router.beforeEach((to, from) => {
if (to.meta.requiresAuth && !isAuthenticated()) {
return { path: '/login' };
}
});
export default router;
2. Vue Router 3 (Vue 2) Setup
import Vue from 'vue';
import VueRouter from 'vue-router';
Vue.use(VueRouter);
const router = new VueRouter({
mode: 'history',
routes: [
{ path: '/', component: () => import('./views/Home.vue') },
{ path: '/about', component: () => import('./views/About.vue') },
],
});
3. Programmatic Navigation
// Vue 3 with Composition API
import { useRouter } from 'vue-router';
const router = useRouter();
router.push({ name: 'user', params: { id: '123' } });
router.replace('/home');
router.go(-1);
Best Practices
- Centralize route guards for permission checks; lazy-load large page components
- Use named routes with
params/queryfor type-safe navigation; avoid storing sensitive data in routes - Prefer
createWebHistoryfor clean URLs; configure server-side fallback for HTML5 history mode - Use route
metafields for layout control, breadcrumbs, and access control
Resources
- Vue Router 4: https://router.vuejs.org/
- Vue Router 3: https://v3.router.vuejs.org/
Keywords
vue router, routing, navigation guards, Vue 3, Vue 2, lazy loading, dynamic routes, nested routes, meta fields, programmatic navigation, createRouter
More from teachingai/full-stack-skills
electron
Build cross-platform desktop applications with Electron, covering main/renderer process architecture, IPC communication, BrowserWindow management, menus, tray icons, packaging, and security best practices. Use when the user asks about Electron, needs to create desktop applications, implement Electron features, or build cross-platform desktop apps.
1.8Kelement-plus-vue3
Provides comprehensive guidance for Element Plus Vue 3 component library including installation, components, themes, internationalization, and API reference. Use when the user asks about Element Plus for Vue 3, needs to build Vue 3 applications with Element Plus, or customize component styles.
1.5Kuniapp-project
Provides per-component and per-API examples with cross-platform compatibility details for uni-app, covering built-in components, uni-ui components, and APIs (network, storage, device, UI, navigation, media). Use when the user needs official uni-app components or APIs, wants per-component examples with doc links, or needs platform compatibility checks.
741vue3
Guidance for Vue 3 using the official guide and API reference. Use when the user needs Vue 3 concepts, patterns, or API details to build components, apps, and tooling.
487drawio-flowchart
Creates flowcharts, swim lane diagrams, and business process diagrams using Draw.io (diagrams.net). Covers standard flowchart shapes (process, decision, start/end), connectors, auto-layout, and export to PNG/SVG/PDF. Use when the user needs to visualize workflows, decision trees, or business processes.
358mybatis-plus-generator
Generates MyBatis-Plus code (Entity, Mapper, Service, ServiceImpl, Controller, DTO, VO, BO) from database tables. Supports MVC and DDD architectures, Java and Kotlin, with standard CRUD and custom methods. Use ONLY when the user explicitly mentions MyBatis-Plus or mybatis-plus-generator; do NOT trigger for JPA, Hibernate, or other ORMs.
268