路由守卫(Route Guard)是在路由切换时执行的一些特定函数,这些函数可以在路由导航的不同阶段被调用,以执行特定的逻辑来控制和管理路由的切换
通过编写和注册这些守卫函数,我们可以实现对路由的拦截、控制和管理,从而实现一些安全控制、权限控制、页面跳转控制等功能
导航守卫可以分为、和
路由守卫是在导航过程中按照一定的顺序执行的异步函数。在所有守卫函数 resolve 之前,导航处于等待状态
开发者可以创建多个守卫函数,并将它们组合成一个数组。当一个导航触发时,这些守卫函数会按照顺序被依次调用
如果在守卫函数执行过程中遇到了意外情况,可能会抛出一个 ,这会取消导航并调用 注册的回调函数
每个守卫函数接收两个参数:
- : 需要前往的路由对应的标准化路由对象 — 需要前往的路由
- : 当前正要离开的路由对应的标准化路由对象 — 当前正在离开的路由
守卫函数可以返回以下值:
- : 取消当前的导航
- 或 : 正常执行当前导航
- 一个路由字符串地址或路由对象: 跳转到返回的新路由
vue-router有三种全局路由守卫
守卫函数说明功能全局前置守卫在路由改变之前鉴权,登录状态核对,打点等相关操作全局解析守卫在导航被确认之前
1. 所有的组件内守卫执行完毕
2. 异步路由组件已经解析完成方法可以确保路由组件及组件内回调被执行完成后再执行渲染
可以避免在渲染页面之前异步组件还未加载完成的情况
所以这个回调更多的是vue内部被回调全局后置钩子在路由跳转完成后执行的回调
注意: 此时导航已经完成,无法通过这个回调来改变导航
所以它不是守卫函数,只是一个钩子函数比如页面滚动到指定位置、更新页面标题等
1. 所有的组件内守卫执行完毕
2. 异步路由组件已经解析完成方法可以确保路由组件及组件内回调被执行完成后再执行渲染
可以避免在渲染页面之前异步组件还未加载完成的情况
所以这个回调更多的是vue内部被回调全局后置钩子在路由跳转完成后执行的回调
注意: 此时导航已经完成,无法通过这个回调来改变导航
所以它不是守卫函数,只是一个钩子函数比如页面滚动到指定位置、更新页面标题等
讯享网
讯享网
是路由独享守卫,该守卫只有在进入路由时触发,不会在 、 或 改变时触发
也可以将一个函数数组传递给 以方便在不同路由中复用守卫函数
讯享网
组件内守卫指的是在内直接定义的导航守卫函数
也就是说组件内守卫只能在路由组件中使用,在渲染到的子组件中是不存在组件内守卫的
守卫说明异步组件加载完毕,组件实例化之前
不可以访问组件实例 当前路由改变,但是该组件被复用时调用
如 和 之间之间进行跳转的时候
可以访问组件实例 离开该组件的时候
可以访问组件实例
不可以访问组件实例 当前路由改变,但是该组件被复用时调用
如 和 之间之间进行跳转的时候
可以访问组件实例 离开该组件的时候
可以访问组件实例
是唯一一个支持给 传递回调的守卫
是一个函数,在被回调的时候,会传入组件实例作为方法的参数
离开守卫 通常用来预防用户在离开界面时没有保存修改
讯享网


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/201018.html