zoukankan      html  css  js  c++  java
  • vue 路由守卫的先后执行过程

    路由守卫共计三种

    1 全局守卫router.beforeEach 页面加载之前,router.afterEach页面加载之后 

      也就是我们直接设置vueRouter

    import router from '@/router'
    router.beforeEach(async (to, from, next) => {
       //做一些事情
       next()  
    })

    2   路由自己的守卫 

    const router = new VueRouter({
      routes: [
        {
          path: '/foo',
          component: Foo,
          beforeEnter: (to, from, next) => {
            // ...
          }
        }
      ]
    })

    3  页面内的守卫

    beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave

    和vue 钩子函数属于同一级 beforeRouteEnter 这个特殊注意 , 因为它执行的时候是没有this的, 因为那会vue实例还没有被创建, 但是它又一个可以替代this的东西

    beforeRouteEnter(to, from, next) {
        next (vm => {
            // vm相当于this
        })
    }

    那么vueRouter 它具体是哪个先后呢

    1 显示触发跳转 , 有了现在在什么地方,要去到什么地方

    2 然后触发现在所在router的离开事件

    3 调用全局也就是1类守卫的beforeEach守卫

    4 调用将要去的ruoter里的beforeRuteUpdate方法(原地跳转会触发)

    5 然后进入2类路由守卫的beforeEnter中

    6 这时候进行加载router对应的组件页面

    7 加载完成后调用组件的beforeRouteEnter

    8 然后调用全局的beforeResolve守卫

    9 然后就是路由确认跳转 ,调用全局beforeResolve守卫 

    10 调用全局的afterEach

    11 触发更新DOM

    12 调用组件内的beforeRouteEnter

    总结执行顺序常用的

    beforeRouteLeave -> 1类守卫的beforeEach守卫 -> 2类守卫 -> 组件beforeRouteEnter , 其它的可以选择使用, 这几个算比较有用的吧

    特殊注意 2类路由守卫 

    redirect: '/partindex',
    这种情况下不触发 , 因为不涉及进入
  • 相关阅读:
    ISTQB测试人员认证 初级(基础级)大纲
    5.2 测试计划和估算
    4. 测试设计技术
    V模型与测试级别
    1.3 Seven Testing Principles
    什么是DNS?
    总结SQL查询慢的50个原因
    CPU分几核几核的是什么意思?
    监控查询慢sql
    关于并发用户数的思考-通过PV量换算并发
  • 原文地址:https://www.cnblogs.com/sunjinggege/p/15109519.html
Copyright © 2011-2022 走看看