vue实现导航跳转
vue-router 基本跳转方法
在 Vue 项目中实现导航跳转主要通过 vue-router 完成。安装路由依赖:
npm install vue-router
在 router/index.js 中配置路由:
import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
const routes = [
{ path: '/', component: Home },
{ path: '/about', component: () => import('../views/About.vue') }
]
const router = createRouter({
history: createWebHistory(),
routes
})
声明式导航
使用 <router-link> 组件实现跳转:
<router-link to="/">首页</router-link>
<router-link :to="{ name: 'about' }">关于</router-link>
带参数的跳转示例:
<router-link :to="{ path: '/user', query: { id: 123 } }">用户</router-link>
<router-link :to="{ name: 'profile', params: { username: 'john' } }">个人资料</router-link>
编程式导航
通过 router.push() 方法跳转:
// 字符串路径
this.$router.push('/about')
// 带查询参数
this.$router.push({ path: '/user', query: { id: '123' } })
// 命名路由带参数
this.$router.push({ name: 'user', params: { userId: '123' } })
替换当前路由(不保留历史记录):

this.$router.replace('/login')
前进/后退导航:
this.$router.go(1) // 前进
this.$router.go(-1) // 后退
路由守卫控制跳转
全局前置守卫:
router.beforeEach((to, from, next) => {
if (to.meta.requiresAuth && !isAuthenticated) {
next('/login')
} else {
next()
}
})
组件内守卫:

export default {
beforeRouteEnter(to, from, next) {
// 在渲染该组件的对应路由被验证前调用
next()
},
beforeRouteLeave(to, from, next) {
// 导航离开该组件的对应路由时调用
next()
}
}
动态路由匹配
带参数的路由配置:
{
path: '/user/:id',
component: User,
props: true // 将参数作为 props 传递
}
在组件中获取参数:
// 通过 props
props: ['id'],
// 或通过 $route
this.$route.params.id
嵌套路由实现
配置子路由:
{
path: '/user/:id',
component: User,
children: [
{ path: 'profile', component: Profile },
{ path: 'posts', component: Posts }
]
}
在父组件中添加 <router-view>:
<div class="user">
<h2>User {{ $route.params.id }}</h2>
<router-view></router-view>
</div>






