Vue Router 知识全总结
按由浅入深、必学顺序排好,每一步都带知识点解析 + 作用 + 代码示例,你照着一步步学,学完路由直接吃透,做后台、官网、全栈项目都够用。
前置准备
- 已创建 Vite + Vue3 项目
- 安装路由:
bash
npm install vue-router@4
第一阶段:基础入门(必会打底)
1. 路由核心概念解析
- 路由:就是地址路径 → 对应页面组件的映射
- 路由出口
<router-view>:页面显示的容器,匹配到的组件在这里渲染 - 路由导航
<router-link>:替代 a 标签,跳转不刷新页面 - 路由模式:控制浏览器地址栏格式
2. 基础配置完整步骤
- 新建
src/router/index.js - 导入核心 API、页面组件
- 配置 routes 规则
- 创建路由实例并导出
main.js挂载App.vue配置导航和出口
3. 三种路由模式详解
createWebHashHistory(hash 模式)
- 地址带
# - 优点:本地 / 部署刷新不 404,不用服务器配置
- 缺点:地址不美观,SEO 差
- 适用:后台管理系统、练习项目
createWebHistory(history 模式)
- 地址无
#,干净好看 - 优点:美观、SEO 友好
- 缺点:部署需要 Nginx 配置,否则刷新 404
- 适用:官网、正式线上项目
createMemoryHistory
- 无浏览器地址变化
- 适用:SSR 服务端渲染、单元测试,日常开发不用
4. 路径符号彻底搞懂
./当前同级目录../回到上一级目录@等价src/别名,简化路径,告别多层../
第二阶段:核心语法(开发天天用)
1. 路由重定向 redirect
解析:访问某个路径,自动跳转到另一个路径场景:打开根路径 / 自动跳到首页 /home
js
{ path: '/', redirect: '/home' }
2. 路由别名 alias
解析:同一个页面,多个地址可以访问场景:/home 和 / 都访问首页
js
{ path: '/home', alias: '/', component: ()=>import('@/views/Home.vue') }
3. 静态路由
解析:固定写死的路由地址,所有人都能访问适用:首页、登录页、关于页等公共页面
4. 动态路由 params 参数
解析:路径带可变参数,如用户 ID、文章 ID地址:/user/1001
路由配置
js
{ path: '/user/:id', component: ()=>import('@/views/User.vue') }
组件内取值
vue
<script setup>
import { useRoute } from 'vue-router'
const route = useRoute()
// 获取动态参数
console.log(route.params.id)
</script>
5. 查询路由 query 参数
解析:问号后面的参数,/list?name=张三&age=20
取值
js
route.query.name
route.query.age
区别:
- params:路径一部分,地址更优雅
- query:拼接在后面,适合筛选、分页参数
6. 声明式导航 vs 编程式导航
声明式:<router-link>
模板中直接写,适合菜单导航
vue
<router-link to="/home">首页</router-link>
编程式:useRouter 跳转
解析:JS 代码里跳转,点击按钮、接口请求后跳转必用
vue
<script setup>
import { useRouter } from 'vue-router'
const router = useRouter()
// 字符串跳转
const goAbout = () => {
router.push('/about')
}
// 带动态参数跳转
const goUser = () => {
router.push(`/user/2026`)
}
</script>
7. 路由懒加载
解析:不一次性加载所有页面,用到才加载,提升首屏加载速度写法:不用 import 提前导入,用函数形式
js
component: () => import('@/views/About.vue')
企业项目必用,否则页面多了首屏卡顿。
第三阶段:进阶核心(企业必备)
1. 嵌套路由 children
解析:页面里包含子页面,典型结构:侧边栏 + 顶部导航 + 中间子页面规则:父组件必须再放一个 <router-view>
配置示例
js
{
path: '/admin',
component: ()=>import('@/views/Admin.vue'),
children: [
{ path: 'user', component: ()=>import('@/views/Admin/User.vue') },
{ path: 'order', component: ()=>import('@/views/Admin/Order.vue') }
]
}
访问地址:/admin/user
2. 路由元信息 meta
解析:给路由附加自定义标记,用来存页面标题、是否需要登录、是否隐藏菜单
js
{
path: '/admin',
component: ()=>import('@/views/Admin.vue'),
meta: {
title: '管理员中心',
needLogin: true, // 需要登录才能访问
hidden: false
}
}
3. 路由守卫(重中之重)
解析:路由跳转前后的拦截函数,用来做登录鉴权、权限控制、修改页面标题分三类:
- 全局前置守卫:所有路由跳转都经过
- 路由独享守卫:只给某一个路由单独设置
- 组件内守卫:写在页面组件内部
全局守卫示例(登录拦截)
js
router.beforeEach((to, from, next) => {
// to 要去的页面
// from 来自哪个页面
// next 放行/跳转
if (to.meta.needLogin) {
// 判断是否有登录token
const token = localStorage.getItem('token')
token ? next() : next('/login')
} else {
next()
}
})
第四阶段:工程化高阶(大型项目必学)
1. 路由模块化拆分
解析:项目页面多了,把路由拆成多个文件:home路由、admin路由、用户路由,统一引入,方便维护
2. 动态添加路由
解析:后端返回菜单列表,前端根据接口动态生成路由,做权限管理(不同角色看到不同菜单)用到 router.addRoute()
3. 路由与 KeepAlive 缓存
解析:进入页面不重复请求接口、保留页面状态,搭配路由实现页面缓存
4. 路由滚动行为
解析:切换页面自动回到顶部,解决页面滚动位置保留问题
5. 部署 404 问题解决
- hash 模式:无需配置
- history 模式:Nginx 配置,解决刷新 404
6. 404 兜底页面
解析:匹配不到的路径,统一跳转到 404 页面
js
{ path: '/:pathMatch(.*)*', redirect: '/404' }
最优学习顺序(照着学不迷路)
- 基础配置 + 两种路由模式
- ./../ @ 路径吃透
- 重定向 + 别名
- 动态路由 params + 查询路由 query
- 声明式 + 编程式导航
- 路由懒加载
- 嵌套路由 children
- 路由元信息 meta
- 路由守卫(登录拦截)
- 模块化拆分 + 404 页面
- KeepAlive 缓存 + 滚动行为
- 动态路由 + 部署 Nginx 配置
更多推荐

所有评论(0)