1、导航守卫有三种:全局的, 单个路由独享的, 组件级的。
1.全局的
在router/index.js中
beforeEach使用 router.beforeEach 注册一个全局前置守卫,有三个参数,to,from,next
beforeResolve用 router.beforeResolve 注册一个全局解析守卫,在所有组件内守卫和异步路由组件被解析之后,解析守卫就被调用
afterEach全局后置钩子,它没有next 参数,也不会改变导航本身,因为此时导航已经完
2.单个路由
写在路由配置中
beforeEnter有三个参数,to,from,next
3.组件内的
作为属性写在组件内
beforeRouteEnter 此时组件实例还没被创建,不能获取组件实例this
beforeRouteUpdate 在当前路由改变,但是该组件被复用时调用,可以访问组件实例this
beforeRouteLeave 导航离开该组件的对应路由时调用,可以访问组件实例this