路由导航守卫:进入路由之前的回调函数,(加上判断)可以控制是否可以进入这个路由,做一个路由拦截和跳转页面。
分为,全局路由导航守卫,组件内导航守卫,独享导航守卫
比如说,当点击商城的购物车的时候,需要判断一下是否登录,如果没有登录,就跳转到登录页面,如果登陆了,就跳转到购物车页面,相当于有一个保安在安检
主要介绍,全局路由导航守卫( beforeEach、 afterEach),路由守卫写在main.js文件,或者写在router文件夹下的index.js文件,
全局路由导航守卫,三个参数,to去哪里,from从哪来,next跳转
又分为前置路由导航守卫,后置路由导航守卫
例:前置
router.beforeEach(function (to, from, next) {
if (to.path !== '/login') {
if (store.state.user.token) {
next()
} else {
next('/login')
}
} else {
next()
}
})
先判断不是去login页面,如果是去login就是正常去登陆
如果不是去login则进入第二个判断,token是不是为true,如果为true则直接跳转点击页面
如果token为false,则需要去login页面登录后,才能正常跳转
后置:全局后置路由守卫作用:初始化的时候被调用、每次切换路由之后被调用
后置相比与前置少了一个值,没有next,例如后置守卫可以更改项目title