• Vue的路由守卫


    全局守卫

    写在router的js文件下边(不是单独的某个路由里边)

    1、全局前置钩子router.beforeEach(fn),导航被触发----一般登录验证

    2、全局解析钩子router.beforeResolve(fn),组件初始化

    3、全局后置钩子router.afterEach(fn),没有next,导航被确认,一般路由跳转以后用window把窗口调上去

      fn为回调函数,该回调函数一般都有三个形参to,from,next

    to表示跳转的路由,from表示当前页面的路由,next是执行跳转到哪个路由

    router.beforeEach(fn)一般用于过滤路由,如判断是否登录

    1. //全局前置守卫
    2. router.beforeEach((to, from, next) => {
    3. //用户未登录只能访问首页、登录注册页面
    4. if (to.path == "/" || to.path == "/login" || to.path == "/register") {
    5. next();
    6. } else {
    7. //去其他页面判断是否登录
    8. let flag = window.localStorage.getItem("email");
    9. //登录过直接放行
    10. if (flag) {
    11. next()
    12. } else {
    13. //未登录则跳转到首页
    14. Message({
    15. message: '您尚未登录哦,请先登录!',
    16. type: 'warning',
    17. duration: 1500
    18. });
    19. next("/");
    20. }
    21. }
    22. })

    router.afterEach(fn)

    应用场景:如用于解决跳转路由时,跳转路由的界面并不是在该面顶部的一个小bug

    1. router.afterEach((to, from) => {
    2. window.scrollTo(0,0)
    3. })

    独享守卫

    单独写在某个注册路由里边

    路由独享的守卫beforeEnter(to,from,next),路由初始化(组件未初始化)----

    a,路由鉴权-----用户体验:界面,功能,bug,效率,权限

    b,组件异步加载情景中(插件配置:syntax-dynamic-import)

    1. routes:[{
    2. path:"/test",
    3. component:()=>import("../components/Test.vue"),
    4. beforeEnter(to,from,next){
    5. if(to.path==="/test"){
    6. alert("请登录");
    7. next(false); // 禁止跳转
    8. }else{
    9. next()
    10. }
    11. }
    12. }]

    组件内部生命周期守卫

    beforeRouteLeave 从该组件离开

    beforeRouteEnter(to,from,next),组件被激活,使用不了this,故构造指定该next 可以接收一个回调函数接收当前vm 实例----路由传参获取参数,得到初始化数据

    beforeRouteUpdate(to,from,next),组件重用时被调用----路由传参获取参数,避免增添watch 开销

    总结

    导航守卫执行顺序:beforeRouteLeave < beforeEach < beforeRouteUpdate < beforeEnter < beforeRouteEnter < beforeResolve < afterEach

  • 相关阅读:
    SpringBoot入门
    跨越技术鸿沟,革新存储产业:华瑞指数云重磅发布下一代软件定义存储产品
    行业洞察:分布式云如何助力媒体与娱乐业实现创新与增长?
    JS迭代器及异步
    【云原生】设备入云之FlexManager主流控制器读写
    【Anoconda】安装 miniconda
    人脸识别5.1.3- insightface人脸识别模型arcface-Paddle
    STM32 BSRR BRR ODR 寄存器解析(F4系列已经去掉BRR寄存器了)
    部分SOP-8双运放选型参考
    React之受控组件和非受控组件以及高阶组件
  • 原文地址:https://blog.csdn.net/m0_63470734/article/details/126840662