1.路由守卫
先说我的理解,路由守卫类似一个安保系统,要向进入园区,必须经过安保的同意,同意了就放行,继续操作,那么路由守卫也是一样的
包含 全局守卫 独享守卫 组件内守卫
1.1 全局守卫
应用于整个页面,处理对应的事件,分为前置守卫和后置守卫
<!--1.定义组件-->
let comA ={
data(){},
template:``,
created(){
this.id = this.$route.params.id
this.username = this.$route.params.username
}
}
<!--2.定义路由-->
let router = new VueRouter({
routes:
? ? [
? ? {path:'/user:id/username/:username',component: comA}
? ? ]
})
<!--4.绑定路由全局守卫 前置-->
router.beforeEach((to,from,next)=>{
console.log('前置',to,from)
next();
})
<!--绑定路由全局守卫 后置-->
router.afterEach((to,from)=>{
console.log('后置',to,from);
})
<!--3.路由注册-->
router
1.2 路由独享守卫
该路由有自己的守卫任务,如该生产车间有自己的任务,保证自己车间的任务能够完成
官方的定义是:你可以在路由配置上直接定义beforEnter守卫,这些守卫和全局前置守卫的方法和参数是一样的
参数:
beforeEnter(to,from,next)
<!-- to 路由对象,要进入的目标
<!-- from 当前导航正要离开的路由
<!-- next 是否在守卫之后进行跳转-->
next() 所指路由
next(false) 中断当前路由
next('route') 跳转知道路由
next('error') 跳转错误路由
直接在配置信息上定义路由
let router = new VueRouter({
routes:
[
path: '/user:id/username/:username',
component:comA,
name:'coma'
beforeEnter:(to,from,next){
next();
},
{
path:'/comA',
component:comB
}
]
})
?
let vm = new Vue({
el:'#app',
data:{},
methods:{},
created(){},
router
})
1.3 组件内守卫
通常用来禁止用户还未保存的情况下突然离开
beforeRouteEnter
路由进入之前
beforeRouteEnter(to,from,next){
next()
}
路由更新之前
beforeRouteUpdate(to,form,next){
this.id = to.params.id
this.username = to.params.username
next()
}
beforeRouterLeave(to,from,next){
}
|