vue怎样实现路由跳转
路由跳转的实现方式
在Vue中,路由跳转主要通过vue-router实现。以下是几种常见的路由跳转方法:
声明式导航
使用<router-link>组件实现跳转,适合模板中使用:
<router-link to="/home">Home</router-link>
<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>
编程式导航
通过this.$router实例方法实现跳转,适合脚本逻辑中控制:
// 路径跳转
this.$router.push('/home')
// 命名路由带参数
this.$router.push({ name: 'user', params: { userId: 123 }})
// 带查询参数
this.$router.push({ path: '/user', query: { id: 1 }})
// 替换当前路由(不保留历史记录)
this.$router.replace('/login')
// 前进/后退
this.$router.go(-1)
路由传参方式
params传参 需要先在路由配置中定义参数:

// 路由配置
{ path: '/user/:id', component: User }
使用时:
this.$router.push('/user/123')
// 或
this.$router.push({ name: 'user', params: { id: 123 }})
query传参 不需要预先配置:

this.$router.push({ path: '/user', query: { id: 123 }})
// 接收:this.$route.query.id
路由守卫控制跳转
可以在跳转前后添加控制逻辑:
// 全局前置守卫
router.beforeEach((to, from, next) => {
if (to.meta.requiresAuth && !isAuthenticated) {
next('/login')
} else {
next()
}
})
// 路由独享守卫
{
path: '/admin',
component: Admin,
beforeEnter: (to, from, next) => {
// 特殊逻辑处理
}
}
// 组件内守卫
export default {
beforeRouteEnter(to, from, next) {
// 组件实例未创建时调用
},
beforeRouteUpdate(to, from, next) {
// 路由改变但组件复用时调用
}
}
动态路由处理
对于需要权限控制的场景,可以动态添加路由:
// 添加新路由
router.addRoute({
path: '/admin',
component: Admin
})
// 删除路由
router.removeRoute('admin')
路由懒加载
优化性能时可采用懒加载方式:
const User = () => import('./views/User.vue')
{
path: '/user',
component: User
}






