Vue router 路由守卫详解

2022-04-15 0 539
目录
  • 一、全局前置beforeEach
    • 1.全局前置beforeEach
    • 2.实现
  • 二、需求二
    • 三、全局后置守卫afterEach
      • 1.修改title为自己的title
    • 四、组件内守卫
      • 1.beforeRouteEnter
      • 2.beforeRouteLeave
    • 总结

      一、全局前置beforeEach

      当 Local Storage 里面存储的 name 是 zhangsan 的时候, 点击消息才显示消息内容

      Vue router 路由守卫详解

      1. 全局前置beforeEach

      给router添加一个路由守卫 beforeEach

      语法 :

      router.beforeEach((to, from, next)=>{})
      

      作用 : 初始化的时候 和 在每一次路由切换之前调用beforeEach里面的函数

      参数 :

      1.to : 目标路由

      2.from : 跳转前的路由

      3.next : 放行

      2. 实现

      Vue router 路由守卫详解

      二、需求二

      如果有很多个路径都需要做出判断以后才跳转, 就需要写很多判断的代码, 判断结构就会很复杂

      这时需要判断的路由里面就可以放一个meta标签

      meta标签提供关于HTML文档的元数据 (元数据指用来描述数据的数据)

      Vue router 路由守卫详解

      这时就可以使用meta里面的标记字段进行判断

      Vue router 路由守卫详解

      三、全局后置守卫 afterEach

      afterEach 和 beforeEach 使用方法基本一致.

      区别就是afterEach没有next这个参数

      1. 修改title为自己的title

      给每个路由指定自己的title名称

      const router = new VueRouter({
        routes: [
          {
            name: 'home',
            path: '/home',
            component: Home,
            meta: {
              title: "首页"
            },
            children: [ 
              {
                name: "xiaoxi",
                path: 'message',
                component: Message,
                meta: {
                  title: "消息"
                },
                children: [
                  {
                    name: 'xiangqing',
                    path: 'detail',
                    component: Detail,
                    meta: {
                      isAuth: true,
                      title: "消息详情"
                    }
                  }
                ]
              }
            ]
          },
          {
            path: '/about',
            component: About,
            meta: {
              title: "关于"
            }
          }
        ]
      })
      

      在 beforEach里面修改title名

      router.afterEach((to, from) => {
        document.title = to.meta.title || "测试"
      })
      

      四、组件内守卫

      1. beforeRouteEnter

      通过路由规则, 进入该组件时被调用

      2. beforeRouteLeave

      通过路由规则, 离开该组件时被调用

      总结

      本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注NICE源码的更多内容!

      免责声明:
      1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

      2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
      如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
      如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

      NICE源码网 JavaScript Vue router 路由守卫详解 https://www.niceym.com/21973.html