以下是一个完整的 Vue Router 使用示例及实战演示,涵盖基础配置、动态路由、嵌套路由、导航守卫等核心功能。
npm init vue@latest
# 选择 TypeScript/JS + Vue Router 选项
npm install vue-router@4
src/
├── components/
│ ├── Home.vue
│ ├── About.vue
│ └── User.vue
├── router/
│ └── index.js
└── App.vue
Home.vue
:
首页
欢迎来到我的网站
About.vue
:
关于我们
这里是公司介绍...
import { createRouter, createWebHistory } from 'vue-router'
import Home from '../components/Home.vue'
import About from '../components/About.vue'
const routes = [
{ path: '/', name: 'Home', component: Home },
{ path: '/about', name: 'About', component: About }
]
const router = createRouter({
history: createWebHistory(), // 启用HTML5历史模式
routes
})
export default router
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
createApp(App).use(router).mount('#app')
User.vue
:
用户详情 - {{ $route.params.id }}
用户名:{{ userName }}
const routes = [
// ...之前的路由
{
path: '/user/:id',
name: 'User',
component: User,
props: true // 开启props传参模式
}
]
Messages.vue
:
消息列表
- {{ msg }}
{
path: '/user/:id',
name: 'User',
component: User,
children: [
{
path: 'messages',
component: Messages,
meta: { title: '用户消息' }
}
]
}
router.beforeEach((to, from, next) => {
console.log(`正在跳转到 ${to.fullPath}`)
// 权限验证示例
const isAuthenticated = false // 假设未登录
if(to.name !== 'Home' && !isAuthenticated){
alert('请先登录')
next('/')
} else {
next()
}
})
{
path: '/admin',
component: () => import('../components/Admin.vue'),
beforeEnter: (to, from, next) => {
if(new Date().getHours() < 9 || new Date().getHours() > 18){
alert('非工作时间禁止访问')
next(false)
} else {
next()
}
}
}
Layout.vue
:
{
path: '/dashboard',
components: {
default: Dashboard,
sidebar: Sidebar
},
children: [
{ path: '', redirect: 'stats' },
{ path: 'stats', component: Stats },
{ path: 'settings', component: Settings }
]
}
完整代码已上传至GitHub仓库,包含以下功能:
运行效果截图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YGGBBaQ0-1751696869407)(https://via.placeholder.com/600x400?text=Vue+Router+Demo)]
location / {
try_files $uri $uri/ /index.html
}
const routes = [
{
path: '/about',
component: () => import('../components/About.vue')
}
]
const router = createRouter({
scrollBehavior: () => ({ left: 0, top: 0 })
})
通过以上步骤,您可以快速掌握 Vue Router 的核心用法,并在实际项目中灵活运用各种高级特性。建议将路由配置拆分为独立模块文件进行维护,特别是在大型项目中。