用了vue这么久,但是路由这一块基本都上都是使用router.beforeEach这个全局前置守卫,导致其他的很容易忘了,为了避免以后又要去看文档,自己写一下吧
路由守卫就是用户想要进行一些操作时,获取用户的一些信息进行判断是否继续进行操作
路由守卫分为:全局路由守卫、独享路由守卫以及组件内路由守卫
//全局前置守卫 每次路由切换之前调用
router.beforeEach((to,from,next) =>{
//第一个参数to,包含的内容是切换后的路由对象,也就是跳转后的路由对象
//第二个参数from,包含的内容的是切换前的路由对象,也就是跳转前的路由对象
//第三个参数next(),是否往下执行,执行的话,如果不写的话路由就不会跳转,操作将会终止
})
//全局解析守卫 路由跳转前调用,在所有组件内守卫和异步路由组件被解析之后 router.beforeResolve((to,from,next) =>{
//第一个参数to,包含的内容是切换后的路由对象,也就是跳转后的路由对象
//第二个参数from,包含的内容的是切换前的路由对象,也就是跳转前的路由对象
//第三个参数next(),是否往下执行,执行的话,如果不写的话路由就不会跳转,操作将会终止
})
//全局后置守卫 每次路由切换之后调用
router.afterEach((to,from) =>{
//第一个参数to,包含的内容是切换后的路由对象,也就是跳转后的路由对象
//第二个参数from,包含的内容的是切换前的路由对象,也就是跳转前的路由对象
})
//路由独享守卫 在进入路由组件时被调用,全局路由守卫服务的是所有路由组件,而独享路由守卫只服务于被配置的单个路由组件
beforeEnter(to,from,next){
//第一个参数to,包含的内容是切换后的路由对象,也就是跳转后的路由对象
//第二个参数from,包含的内容的是切换前的路由对象,也就是跳转前的路由对象
//第三个参数next(),是否往下执行,执行的话,如果不写的话路由就不会跳转,操作将会终止
}
//组件内路由守卫 当进入或离开组件时会触发调用
//进入守卫:进入该组件时被调用
beforeRouteEnter (to, from, next) {
//第一个参数to,包含的内容是切换后的路由对象,也就是跳转后的路由对象
//第二个参数from,包含的内容的是切换前的路由对象,也就是跳转前的路由对象
//第三个参数next(),是否往下执行,执行的话,如果不写的话路由就不会跳转,操作将会终止
},
//离开守卫:离开该组件时被调用
beforeRouteLeave (to, from, next) {
//第一个参数to,包含的内容是切换后的路由对象,也就是跳转后的路由对象
//第二个参数from,包含的内容的是切换前的路由对象,也就是跳转前的路由对象
//第三个参数next(),是否往下执行,执行的话,如果不写的话路由就不会跳转,操作将会终止
}
整个流程是:beforeRouteLeave > beforeEach > beforeEnter > beforeRouteEnter > beforeResolve > afterEach