导航就是路由发生变化,守卫就是在这个过程中做一些操作
3个级别
以下都是一些钩子函数(指定在某一时刻触发的函数)
- 全局守卫
- 全局前置 beforeEach
- 全局解析 beforeResolve
- 全局后置 afterEach
- 路由独享
- beforeEnter
- 组件内的守卫
- beforeRouteEnter
- beforeRouteUpdate
- beforeRouteLeave
每个守卫方法接收三个参数
- to 即将要进入的路由目标
- from 即将要离开的路由
- next
是否放行- next() 放行
- next(false) 不放行
- next(’/xxx’) 重定向
- next(error) 抛出异常
从a页面到b页面的过程 /a -> /b 依次触发的函数
- beforeEach 路由前置
- beforeEnter /b上面配置的路由独享
- beforeRouteEnter /b b组件上定义的 组件内守卫
- beforeResolve 全局解析
- afterEach 全局后置
从b回到a /b -> /a 依次触发的函数
- beforeRouteLeave /b b组件上定义的组件内守卫
- beforeEach 全局前置
- beforeResolve 全局解析
- afterEach 全局后置
beforeRouteUpdate() 触发条件
动态路由发生变化,参数变化
/a/1233 -> /a/1223
路由导航守卫的应用
登录拦截
router.js 路由中 定义beforeEnter()
meta:路由元信息,可以做一个全局前置页。