0

0

Vue的路由守卫(navigation guards)有哪些类型?

穿越時空

穿越時空

发布时间:2025-08-04 08:47:01

|

855人浏览过

|

来源于php中文网

原创

路由守卫在 vue router 中用于控制页面导航流程,主要有三种类型:1. 全局路由守卫,包括 beforeeach(用于权限检查)、aftereach(适合清理操作或埋点)和 beforeresolve(在组件内守卫之后调用),例如通过 beforeeach 判断用户是否登录以决定是否跳转至登录页;2. 单个路由独享守卫,在特定路由配置中使用 beforeenter 控制该路由的访问逻辑,如检查权限并决定是否跳转至禁止页面;3. 组件内守卫,包含 beforerouteenter(进入组件前调用)、beforerouteupdate(路由参数变化时重新获取数据)和 beforerouteleave(离开组件前提醒保存未提交数据),例如通过 beforerouteleave 防止用户误操作离开未保存的编辑页面。

Vue的路由守卫(navigation guards)有哪些类型?

在 Vue Router 中,路由守卫(Navigation Guards)是用于控制页面导航流程的一种机制。常见的路由守卫类型主要有三种:


1. 全局路由守卫(Global Guards)

全局路由守卫是在整个应用范围内生效的守卫。它们通常用于处理通用逻辑,比如权限验证、页面加载动画或日志记录。

  • beforeEach:在路由跳转前执行,常用于权限检查。
  • afterEach:在路由跳转完成后执行,适合做一些清理操作或者页面埋点。
  • beforeResolve:在导航被确认之前触发,和
    beforeEach
    类似,但会在所有组件内守卫和异步组件加载完毕之后调用。

举个例子,如果你需要判断用户是否登录才能访问某些页面,就可以在

beforeEach
里做判断:

立即学习前端免费学习笔记(深入)”;

router.beforeEach((to, from, next) => {
  if (to.meta.requiresAuth && !isAuthenticated()) {
    next('/login'); // 跳转到登录页
  } else {
    next(); // 继续正常导航
  }
});

2. 单个路由独享守卫(Route-Specific Guards)

这类守卫是直接定义在某个特定路由配置中的钩子函数,只对这个路由起作用。虽然不常见,但在某些特殊场景下会比较方便。

XFUN
XFUN

小方智能包装设计平台

下载

可以使用

beforeEnter
来实现:

{
  path: '/dashboard',
  component: Dashboard,
  beforeEnter: (to, from, next) => {
    if (checkAccess(to.params.id)) {
      next();
    } else {
      next('/forbidden');
    }
  }
}

这种方式适合一些只需要对单个路由做特别处理的情况,但维护多了容易分散逻辑,不太推荐广泛使用。


3. 组件内守卫(Component-Level Guards)

组件内守卫是在组件内部定义的导航钩子,用于控制当前组件是否允许进入、离开或更新。主要包含以下几个方法:

  • beforeRouteEnter:在进入该组件前调用,不能访问
    this
    ,因为组件实例还未创建。
  • beforeRouteUpdate:当路由参数变化但组件被复用时调用,适合重新获取数据。
  • beforeRouteLeave:在离开该组件前调用,适合提醒用户保存未提交的数据。

举个例子,如果用户正在编辑表单,想防止误操作离开页面:

beforeRouteLeave(to, from, next) {
  if (this.isFormDirty) {
    if (confirm('你有未保存的内容,确定离开吗?')) {
      next();
    } else {
      next(false); // 阻止导航
    }
  } else {
    next();
  }
}

总的来说,这三类路由守卫各有用途,可以根据项目需求灵活搭配使用。全局守卫适合统一处理公共逻辑,组件内守卫更适合组件级别的控制,而路由独享守卫则适用于个别特殊情况。基本上就这些。

相关文章

路由优化大师
路由优化大师

路由优化大师是一款及简单的路由器设置管理软件,其主要功能是一键设置优化路由、屏广告、防蹭网、路由器全面检测及高级设置等,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
菜鸟裹裹入口以及教程汇总
菜鸟裹裹入口以及教程汇总

本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。

0

2026.01.22

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

html编辑相关教程合集
html编辑相关教程合集

本专题整合了html编辑相关教程合集,阅读专题下面的文章了解更多详细内容。

56

2026.01.21

三角洲入口地址合集
三角洲入口地址合集

本专题整合了三角洲入口地址合集,阅读专题下面的文章了解更多详细内容。

51

2026.01.21

AO3中文版入口地址大全
AO3中文版入口地址大全

本专题整合了AO3中文版入口地址大全,阅读专题下面的的文章了解更多详细内容。

397

2026.01.21

妖精漫画入口地址合集
妖精漫画入口地址合集

本专题整合了妖精漫画入口地址合集,阅读专题下面的文章了解更多详细内容。

118

2026.01.21

java版本选择建议
java版本选择建议

本专题整合了java版本相关合集,阅读专题下面的文章了解更多详细内容。

3

2026.01.21

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

16

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

11

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel---API接口
Laravel---API接口

共7课时 | 0.6万人学习

ThinkPHP6.x 微实战--十天技能课堂
ThinkPHP6.x 微实战--十天技能课堂

共26课时 | 1.7万人学习

ThinkPHP6.x API接口--十天技能课堂
ThinkPHP6.x API接口--十天技能课堂

共14课时 | 1.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号