在单页面应用(SPA)开发中,路由管理是核心功能之一。Vue Router 作为 Vue.js 官方推荐的路由解决方案,与 Vue.js 深度集成,提供了以下重要功能:
本教程将使用 Vue 3 的 Composition API 和 语法糖,这是目前最推荐的使用方式,代码更简洁,逻辑更清晰。
对于初学者,推荐使用 Vite 创建 Vue 项目:
npm create vite@latest my-vue-app --template vue
cd my-vue-app
npm install vue-router@4
npm run dev
在 src/router/index.js
中:
import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'
// 定义路由配置
const routes = [
{
path: '/', // 访问路径
name: 'home', // 路由名称(可选但推荐)
component: HomeView // 对应的组件
},
{
path: '/about',
name: 'about',
// 路由懒加载(性能优化)
component: () => import('../views/AboutView.vue')
}
]
// 创建路由实例
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL), // 使用HTML5 history模式
routes // 注入路由配置
})
export default router
src/main.js
中:
import { createApp } from 'vue'
import App from './App.vue'
import router from './router' // 导入路由配置
const app = createApp(App)
app.use(router) // 使用路由插件
app.mount('#app')
最简单直接的跳转方式:
使用路由配置中的 name
属性,更易于维护:
最灵活的方式,可以添加各种参数:
适用场景:参数是路径的一部分,如 /user/123
路由配置:
{
path: '/user/:id', // 动态路径参数
name: 'user',
component: UserView
}
跳转方法:
router.push({ name: 'user', params: { id: 123 } })
接收参数:
适用场景:可选参数,如 /search?q=vue
跳转方法:
router.push({
path: '/search',
query: { q: 'vue', page: 1 }
})
接收参数:
优点:组件不直接依赖路由,更易于复用
路由配置:
{
path: '/product/:id',
name: 'product',
component: ProductView,
props: true // 将params转为props
// 或者使用函数形式更灵活
// props: route => ({ id: route.params.id, query: route.query })
}
组件接收:
// router/index.js
router.beforeEach((to, from, next) => {
const isAuthenticated = checkLoginStatus() // 你的验证逻辑
if (to.meta.requiresAuth && !isAuthenticated) {
// 如果需要登录且未登录,跳转到登录页
next({ name: 'login' })
} else if (to.name === 'login' && isAuthenticated) {
// 如果已登录又访问登录页,跳转到首页
next({ name: 'home' })
} else {
// 正常放行
next()
}
})
router.push('/some-path').catch(err => {
if (err.name !== 'NavigationDuplicated') {
// 如果不是重复导航错误,抛出其他错误
throw err
}
})
() => import()
语法通过本教程,你应该已经掌握了:
✅ Vue Router 的基本配置方法
✅ 编程式导航的各种使用场景
✅ 三种路由传参方式及适用情况
✅ 导航守卫的实际应用
✅ 常见问题的解决方案
路由是 Vue 单页面应用的核心,建议初学者多动手实践,尝试不同的配置和跳转方式。遇到问题时,可以查阅 Vue Router 官方文档 获取最新信息。
如果有任何疑问,欢迎在评论区留言讨论!