Vue 词条目录
前端Wiki/词条/Vue Router

Vue Router

定义Vue 官方的 SPA 路由方案:把 URL 映射到组件,页面切换不刷新

单页应用只有一个 HTML,路由负责「URL 变了显示哪个组件」。Vue Router 的配置是一棵路由树:path(URL 路径)+ component(渲染的组件)+ children(嵌套子路由)+ redirect(重定向)。导航方式:声明式 与编程式 router.push('/x')。

进阶要点:动态路由(path: '/user/:id')通过 useRoute().params 取参;路由守卫(beforeEach)统一做登录拦截;懒加载(() => import('./X.vue'))把大文件拆成按需加载的块。history 模式需要服务器对所有路径都回退到 index.html,否则刷新 404。

HTML
<!-- router/index.js -->
import { createRouter, createWebHistory } from 'vue-router';

export default createRouter({
  history: createWebHistory(),
  routes: [
    { path: '/', component: () => import('../views/Home.vue') },
    { path: '/user/:id', component: () => import('../views/User.vue') },
    { path: '/admin', component: () => import('../views/Admin.vue'),
      meta: { needAuth: true } },                        // 路由元信息
  ],
});

// main.js 全局前置守卫
router.beforeEach((to) => {
  if (to.meta.needAuth && !isLoggedIn()) return '/login';  // 鉴权拦截
});

<!-- 组件内 -->
<template>
  <router-link to="/user/42">用户 42</router-link>
  <router-view />                  <!-- 路由出口 -->
</template>
<script setup>
import { useRoute } from 'vue-router';
const { params } = useRoute();     // params.id === '42'
</script>
⚠ 常见误区
🔗 相关词条Pinia 状态管理前端路由原理组合式 API
← 返回来源章节Vue Router 路由