# Vue3 路由(Vue Router 4)完全指南

你想要掌握 Vue3 中路由的完整用法,我会从安装、基础配置、核心用法 到进阶功能,给你一套最实用、可直接复制的教程。

Vue3 搭配的是 Vue Router 4.x ,语法和 Vue2 有明显区别,采用组合式API写法。


一、快速安装

在你的 Vue3 项目中执行:

bash 复制代码
npm install vue-router@4
# 或
yarn add vue-router@4

二、基础配置(标准模板)

1. 创建路由文件

新建 src/router/index.js,这是路由的核心配置文件:

javascript 复制代码
// 1. 导入依赖
import { createRouter, createWebHistory } from 'vue-router'

// 2. 导入页面组件
import Home from '../views/Home.vue'
import About from '../views/About.vue'

// 3. 路由规则配置
const routes = [
  {
    path: '/',
    name: 'Home', // 路由名称(可选)
    component: Home // 对应组件
  },
  {
    path: '/about',
    name: 'About',
    component: About
  }
]

// 4. 创建路由实例
const router = createRouter({
  history: createWebHistory(), // 历史模式(无#)
  routes // 路由规则
})

// 5. 导出路由
export default router

2. 在 main.js 中挂载路由

javascript 复制代码
import { createApp } from 'vue'
import App from './App.vue'
import router from './router' // 导入路由

// 挂载路由
createApp(App).use(router).mount('#app')

3. 页面挂载路由视图

在 App.vue 中添加:

vue 复制代码
<template>
  <!-- 路由导航 -->
  <nav>
    <router-link to="/">首页</router-link>
    <router-link to="/about">关于</router-link>
  </nav>

  <!-- 路由页面渲染出口(核心) -->
  <router-view></router-view>
</template>

三、核心用法(必学)

1. 编程式导航(JS 跳转)

Vue3 组合式API 中必须先导入再使用:

vue 复制代码
<template>
<!-- 路由导航 --> <nav>
<router-link to="/">首页</router-link> 
<router-link to="/about">关于</router-link> </nav>
<!-- 路由页面渲染出口(核心) --> 
<router-view></router-view> 

 <button @click="goToAbout">去关于页(JS)</button>
 
</template>
<script setup>
import { useRouter } from 'vue-router'

// 获取路由实例
const router = useRouter()

// 1. 字符串路径跳转
const goToAbout = () => {
  router.push('/about')
}

// 2. 命名路由跳转(推荐,更稳定)
const goToHome = () => {
  router.push({ name: 'Home' })
}
</script>

2. 路由传参(query / params)

方式1:query 参数(地址栏可见,类似 ?id=1)

javascript 复制代码
// 跳转
router.push({ path: '/about', query: { id: 1, name: 'test' } })

// 接收参数
import { useRoute } from 'vue-router'
const route = useRoute()
console.log(route.query.id) // 1

方式2:params 参数(地址栏不可见,只能用 name 跳转)

javascript 复制代码
// 跳转
router.push({ name: 'About', params: { userId: 10086 } })

// 接收参数
console.log(route.params.userId) // 10086

方式3:动态路由匹配(/user/123)

路由配置:

javascript 复制代码
{
  path: '/user/:id', // :id 是动态参数
  component: () => import('../views/User.vue')
}

接收参数:

javascript 复制代码
console.log(route.params.id)

四、进阶功能

1. 路由懒加载(优化性能)

无需提前导入组件,访问时才加载:

javascript 复制代码
const routes = [
  {
    path: '/about',
    component: () => import('../views/About.vue') // 懒加载
  }
]

2. 嵌套路由(子路由)

适用场景:页面内的选项卡、侧边栏布局

javascript 复制代码
const routes = [
  {
    path: '/user',
    component: User,
    children: [ // 子路由
      { path: 'profile', component: UserProfile },
      { path: 'orders', component: UserOrders }
    ]
  }
]

在 User.vue 中添加 <router-view> 展示子页面。

3. 路由守卫(权限控制)

全局守卫(登录校验)

javascript 复制代码
// router/index.js
router.beforeEach((to, from, next) => {
  // to: 要去的页面
  // from: 来自哪个页面
  const isLogin = localStorage.getItem('token')
  
  if (to.path === '/login' || isLogin) {
    next() // 放行
  } else {
    next('/login') // 拦截跳转
  }
})

4. 404 页面配置

javascript 复制代码
{
  path: '/:pathMatch(.*)*', // 匹配所有未定义路由
  component: () => import('../views/NotFound.vue')
}

五、常用 API 速查

方法 作用
useRouter() 获取路由实例,用于跳转
useRoute() 获取当前路由信息,用于取参
router.push() 跳转到新页面(保留历史)
router.replace() 替换当前页面(不保留历史)
router.go(-1) 后退/前进页面
<router-link> 声明式导航标签
<router-view> 页面渲染出口

总结

  1. Vue3 用 Vue Router 4 ,配置用 createRouter + createWebHistory
  2. 组合式API 必须用 useRouter/useRoute 操作路由
  3. 核心:配置规则 + 挂载 + 渲染出口 三步完成基础路由
  4. 传参分 query/params/动态路由三种,按需使用
  5. 懒加载、路由守卫是项目必备优化和权限方案
相关推荐
小马不起床1 分钟前
零基础玩转 FastAPI_09:前端基础工程构建
前端·状态模式·fastapi
风骏时光牛马1 小时前
用户管理模块接口开发
前端
彭亚川Allen2 小时前
从零手搓 RAG 之检索全流程,给大模型接上自己的知识库
前端·后端·ai编程
IT_陈寒2 小时前
别让Java字符串拼接偷偷吃掉你的内存
前端·人工智能·后端
软件技术NINI2 小时前
圣罗兰彩妆html+css 4页
前端·css·html
2601_951615203 小时前
网站模板 网站网页模板下载
前端·网络·html
酷炫码神3 小时前
Day 1|HTML5:一个商城首页的骨架,从 DOCTYPE 到语义化
前端·html·html5
AI源码4 小时前
鲜花商城(HTML 版)
前端·html
hiahiahia1234 小时前
Message 和对话
服务器·前端·数据库
雪芽蓝域zzs4 小时前
第 7 节:多边形点击弹窗 + 清空绘制按钮
vue.js