pureadmin的动态路由和静态路由

在 PureAdmin(基于 Vue3 的后台管理框架)中,静态路由动态路由是实现路由管理的两种方式,主要区别在于路由的定义时机、加载方式和灵活性,具体区别如下:

1. 静态路由

  • 定义方式 :路由规则在代码中硬编码,在项目打包时就已经确定,不会随用户或权限变化。

  • 特点

    • 写死在代码中(通常在 router/modules 目录下),例如登录页、404 页、首页等公共页面。
    • 不需要后端接口支持,加载速度快。
    • 对所有用户可见(除非通过前端逻辑手动过滤)。
  • 示例 (PureAdmin 中):

    javascript 复制代码
    // router/modules/static.js
    export default [
      {
        path: '/login',
        name: 'Login',
        component: () => import('@/pages/login/index.vue'),
        meta: { title: '登录', hidden: true }
      },
      {
        path: '/404',
        name: '404',
        component: () => import('@/pages/error/404.vue'),
        meta: { title: '页面不存在', hidden: true }
      }
    ]

2. 动态路由

  • 定义方式 :路由规则不在代码中硬编码 ,而是根据用户权限后端返回数据动态生成,在用户登录后通过接口获取并添加到路由系统中。
  • 特点
    • 路由规则由后端接口返回(例如根据用户角色返回可访问的菜单),前端动态注册。
    • 支持精细化权限控制,不同用户看到的路由(菜单)不同。
    • 需配合权限管理系统使用,灵活性高。
  • 示例流程 (PureAdmin 中):
    1. 用户登录后,前端调用接口获取该用户的权限路由列表。
    2. 前端将后端返回的路由数据(通常是 JSON 格式)转换为 Vue Router 可识别的路由配置。
    3. 通过 router.addRoute() 方法动态添加路由。
    4. 菜单组件根据动态生成的路由自动渲染侧边栏。

核心区别对比

维度 静态路由 动态路由
定义时机 项目打包时固定 用户登录后动态获取
数据来源 前端代码硬编码 后端接口返回(基于用户权限)
权限关联性 不依赖权限,对所有用户可见 与用户权限强关联,按需返回
灵活性 固定不变,修改需重新打包 可实时调整,无需重新打包
适用场景 公共页面(登录、404等) 业务页面(根据角色权限动态展示)

PureAdmin 中的实践

在 PureAdmin 中,通常会结合两种路由方式:

  • 静态路由:处理登录页、错误页等无需权限控制的公共页面。
  • 动态路由:处理业务模块(如用户管理、订单管理等),根据用户角色动态生成可访问的菜单和路由,实现"不同权限的用户看到不同的功能菜单"。

这种设计既保证了公共页面的稳定性,又满足了复杂权限场景下的灵活性。

相关推荐
周周记笔记1 分钟前
初识HTML和CSS(一)
前端·css·html
chxii37 分钟前
在 IIS 中实现 SSL 证书的自动续期
前端
周星星日记44 分钟前
vue3中静态提升和patchflag实现
前端·vue.js·面试
橘子编程1 小时前
React 19 全栈开发实战指南
前端·react.js·前端框架
DanCheOo1 小时前
AI Streaming 架构:从浏览器到服务端的全链路流式设计
前端·agent
我是小趴菜1 小时前
前端如何让图片、视频、pdf等文件在浏览器直接下载而非预览
前端
cg331 小时前
开源项目自动化:用 GitHub Actions 让每个 Issue 都被温柔以待
前端
haierccc1 小时前
Win7、2008R2、Win10、Win11使用FLASH的方法
前端·javascript·html
We་ct1 小时前
LeetCode 50. Pow(x, n):从暴力法到快速幂的优化之路
开发语言·前端·javascript·算法·leetcode·typescript·
柠檬味的Cat1 小时前
使用腾讯云COS作为WordPress图床的实践
前端·github·腾讯云