欢迎光临
我们一直在努力

Vue路由导航守卫全解析:Vue2/Vue3/多端(uni-app)差异与实战指南

Vue路由导航守卫全解析:Vue2/Vue3/多端(uni-app)差异与实战指南

本文系统讲解Vue生态中路由导航守卫的核心原理、全版本用法、跨端差异与实战场景,适合前端新手入门、老手查漏补缺,可直接用于项目开发,也可作为面试复习资料。


一、什么是路由导航守卫?核心作用与适用场景

路由导航守卫,本质是路由跳转过程中的一系列钩子函数,允许你在路由跳转的不同阶段拦截、修改、取消跳转行为,实现对路由的精细化控制。

核心作用

  • 权限控制:最常用的登录拦截、页面权限校验
  • 跳转拦截:未保存表单提示、非法跳转拦截
  • 数据预加载:进入页面前提前请求接口数据
  • 页面埋点:跳转统计、页面标题动态修改
  • 重定向优化:根据用户状态自动调整跳转目标

核心分类(通用逻辑)

无论Vue2/Vue3,导航守卫按作用范围分为3大类,执行顺序固定:

  • 全局守卫:所有路由跳转都会触发
  • 路由独享守卫:仅针对指定路由触发
  • 组件内守卫:仅在当前组件内触发

  • 二、Vue2(vue-router@3)导航守卫完整用法

    Vue2配套的是vue-router@3.x版本,是目前很多存量项目的主流方案,核心特点是必须通过next()回调控制跳转行为。

    2.1 全局守卫

    全局守卫在路由实例上注册,所有路由跳转都会执行,写在router/index.js或main.js中。

    1. 全局前置守卫 beforeEach

    跳转前最早触发的守卫,权限控制的核心钩子,必须调用next()。

    // router/index.js
    import Vue from \’vue\’
    import Router from \’vue-router\’
    import Login from \’@/views/Login.vue\’
    import Home from \’@/views/Home.vue\’

    Vue.use(Router)

    const router = new Router({


    routes: [
    {

    path: \’/login\’, component: Login, meta: {

    title: \’登录页\’ } },
    {

    path: \’/home\’, component: Home, meta: {

    title: \’首页\’, requiresAuth: true } }
    ]
    })

    // 全局前置守卫:登录拦截核心实现
    router.beforeEach((to, from, next) => {


    // 参数说明:
    // to:即将要进入的目标路由对象
    // from:当前导航正要离开的路由对象
    // next:必须调用的回调函数,控制跳转行为
    const token = localStorage.getItem(\’token\’)
    // 白名单:无需登录即可访问的页面
    const whiteList = [\’/login\’, \’/register\’]

    if (token) {


    // 已登录:禁止重复访问登录页
    to.path === \’/login\’ ? next(\’/home\’) : next()
    } else {


    // 未登录:白名单放行,否则跳登录页
    whiteList.includes(to.path

    赞(0)
    未经允许不得转载:171主机测评 » Vue路由导航守卫全解析:Vue2/Vue3/多端(uni-app)差异与实战指南
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址