📜  路由守卫颤动 (1)

📅  最后修改于: 2023-12-03 15:12:15.642000             🧑  作者: Mango

路由守卫颤动

路由守卫是前端框架中常用的一个功能,它可以在路由跳转的不同阶段执行一些逻辑,比如:检查是否登录、获取用户信息、根据用户权限进行路由权限控制等。

路由守卫的分类

路由守卫可分为以下三种:

  1. 全局守卫:在整个应用程序中,只执行一次。
  2. 路由独享守卫:仅对某个路由生效,不会对其他路由生效。
  3. 组件内守卫:在目标组件中设定的守卫,只对目标组件生效。
路由守卫的使用

使用路由守卫需要在路由配置文件中进行设置,如下所示:

import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

const router = new VueRouter({
  mode: 'history',
  routes: [
    {
      path: '/login',
      component: () => import('@/views/Login')
    },
    {
      path: '/home',
      component: () => import('@/views/Home'),
      meta: {
        requireAuth: true
      }
    }
  ]
})

router.beforeEach((to, from, next) => {
  if (to.meta.requireAuth && !localStorage.getItem('token')) {
    next('/login')
  } else {
    next()
  }
})

export default router

在上述代码中,我们通过 router.beforeEach 方法添加了一个全局守卫,用来检查用户是否登录。在进入路由目标页(to)之前,会先执行此方法。

我们的逻辑是,如果用户需要登录(即 to.meta.requireAuth 为 true),且当前没有登录(即 localStorage 中没有 token),则跳转到登录页面(next('/login')),否则继续路由跳转(next())。

路由守卫的应用场景

路由守卫在前端框架中应用非常广泛,其主要的应用场景有以下几个方面:

  1. 登录权限控制:检查用户是否已登录。
  2. 路由权限控制:根据用户的角色权限判断是否可以访问该路由。
  3. 路由参数校验:在执行路由跳转时对参数进行检查和校验。
  4. 重定向处理:根据一定的规则进行重定向处理,如:从旧 url 重定向到新 url。
  5. 页面滚动行为处理:在路由跳转时对当前页面进行滚动行为的处理,如:回到页面顶部。
总结

路由守卫是前端框架中非常重要和实用的一个功能,经过上述的介绍,相信大家已经对路由守卫有了一个更深入的理解。希望各位开发者在实际项目开发中能够充分发挥路由守卫的作用,让我们的代码更加优雅、健壮和规范。