Vue -- vue-全局导航守卫

Vue项目中,为避免每个路由组件中重复修改标题,可以使用全局导航守卫进行优化。Vue-router提供了beforeEach和afterEach钩子,前者在路由变化前触发,可用于修改标题等操作,后者在变化后触发。在beforeEach中,可通过路由的meta信息设置标题,并利用next()控制路由跳转。此外,还可以在路由配置上定义beforeEnter守卫,或者在路由组件内部定义路由独享守卫。
摘要由CSDN通过智能技术生成


为什么要使用导航守卫?

我们来考虑一个需求:在一个SPA应用中,如何改变网页的标题呢?
网页标题是通过<title> 来显示的,但是SPA只有一个固定的HTML,切换不同的页面时,标题并不会改变;但是我们可以通过JavaScript来修改<title>的内容 window.document.title = ‘新的标题’;那么在Vue项目中,在哪里修改呢?什么时候修改比较合适呢?
普通的修改方式:

  • 我们比较容易修改标题的位置是每一个路由对应的组件.vue文件中;
  • 通过created声明周期函数,执行对应的代码进行修改即可;
    如图所示:
    在这里插入图片描述

但是每一页都这样创建会显得比较冗余,优化方案: 可以使用全局导航守卫

全局守卫

什么是导航守卫?

vue-router 提供了导航守卫;主要用来监听路由的进入和离开的; vue-router 提供了前置钩子beforeEach 和后置钩子 afterEach 的钩子函数,他们会在路由即将被改变前和改变后触发.
上例可以使用beforeEach来完成标题的修改.
首先,我们可以在钩子当中定义一些标题,可以利用meta(元数据)来定义; 其次,利用导航守卫,修改我们的标题;如图所示:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值