vue-pure-admin 4.0重大更新:3-4倍页面切换提速与RBAC权限重构全解析

【免费下载链接】vue-pure-admin 【免费下载链接】vue-pure-admin 项目地址: https://gitcode.com/gh_mirrors/vue/vue-pure-admin

引言:告别卡顿,拥抱丝滑体验

你是否还在为后台管理系统页面切换时的卡顿而烦恼?是否因复杂的权限配置而头疼不已?vue-pure-admin 4.0版本带着重大更新来了!本文将深入剖析4.0版本带来的3-4倍页面切换提速优化和RBAC权限系统重构,让你全面了解这些改进如何提升系统性能和开发效率。读完本文,你将能够:

  • 了解vue-pure-admin 4.0版本的核心优化点
  • 掌握页面切换提速的实现原理和使用方法
  • 理解RBAC权限系统的重构思路和优势
  • 学会在实际项目中应用这些优化和改进

一、性能飞跃:页面切换提速3-4倍

1.1 keepAlive缓存机制优化

在vue-pure-admin 4.0版本中,对keepAlive缓存机制进行了深度优化。此前版本中,当页面开启keepAlive缓存后,第一次加载并未真正缓存页面,导致页面切换时仍有明显的加载延迟。4.0版本彻底解决了这一问题,实现了页面的真正缓存。

// src/store/modules/permission.ts
export const usePermissionStore = defineStore({
  id: "pure-permission",
  state: () => ({
    // 缓存页面keepAlive
    cachePageList: []
  }),
  actions: {
    cacheOperate({ mode, name }: cacheType) {
      const delIndex = this.cachePageList.findIndex(v => v === name);
      switch (mode) {
        case "refresh":
          this.cachePageList = this.cachePageList.filter(v => v !== name);
          break;
        case "add":
          this.cachePageList.push(name);
          break;
        case "delete":
          delIndex !== -1 && this.cachePageList.splice(delIndex, 1);
          break;
      }
      // 监听缓存页面是否存在于标签页,不存在则删除
      debounce(() => {
        let cacheLength = this.cachePageList.length;
        const nameList = getKeyList(useMultiTagsStoreHook().multiTags, "name");
        while (cacheLength > 0) {
          nameList.findIndex(v => v === this.cachePageList[cacheLength - 1]) ===
            -1 &&
            this.cachePageList.splice(
              this.cachePageList.indexOf(this.cachePageList[cacheLength - 1]),
              1
            );
          cacheLength--;
        }
      })();
    }
  }
});

1.2 包体积优化

4.0版本在包体积优化方面也做了大量工作,主要包括:

  • 完全移除vxe-table,全版本整体包体积减少1.82MB
  • 移除@pureadmin/components,平台包体积在未启用压缩前减少0.4MB
  • 扩展本地图标的使用,首次启动全版本再次减少13个请求

这些优化使得系统的初始启动时间大幅缩短,与轻量版基本持平。

1.3 Vite4升级与构建优化

4.0版本将Vite升级到了v4版本,并使用unplugin-vue-define-options替换unplugin-vue-macros,使打包速度提升数倍。同时,对首屏加载进行了极大优化,与3.9.0版本之前相比,首屏请求减少71个,首屏加载资源减少近300KB。

1.4 性能对比

为了直观展示4.0版本的性能提升,我们进行了页面切换时间的对比测试:

版本 平均页面切换时间 提升倍数
3.x 300-400ms 1x
4.0 75-100ms 3-4x

从测试结果可以看出,4.0版本的页面切换速度实现了3-4倍的提升,带来了前所未有的丝滑体验。

二、RBAC权限系统重构

2.1 RBAC权限模型简介

RBAC(Role-Based Access Control,基于角色的访问控制)是一种广泛应用的权限管理模型。它通过将权限分配给角色,再将角色分配给用户,实现了权限的灵活管理和细粒度控制。

mermaid

2.2 权限系统核心实现

在vue-pure-admin 4.0中,权限系统的核心实现位于src/store/modules/permission.ts文件中。通过使用Pinia状态管理库,实现了权限的动态加载和管理。

// src/store/modules/permission.ts
import { defineStore } from "pinia";
import {
  type cacheType,
  store,
  debounce,
  ascending,
  getKeyList,
  filterTree,
  constantMenus,
  filterNoPermissionTree,
  formatFlatteningRoutes
} from "../utils";
import { useMultiTagsStoreHook } from "./multiTags";

export const usePermissionStore = defineStore({
  id: "pure-permission",
  state: () => ({
    // 静态路由生成的菜单
    constantMenus,
    // 整体路由生成的菜单(静态、动态)
    wholeMenus: [],
    // 整体路由(一维数组格式)
    flatteningRoutes: [],
    // 缓存页面keepAlive
    cachePageList: []
  }),
  actions: {
    /** 组装整体路由生成的菜单 */
    handleWholeMenus(routes: any[]) {
      this.wholeMenus = filterNoPermissionTree(
        filterTree(ascending(this.constantMenus.concat(routes)))
      );
      this.flatteningRoutes = formatFlatteningRoutes(
        this.constantMenus.concat(routes)
      );
    }
  }
});

2.3 权限过滤与路由生成

权限系统通过filterNoPermissionTree函数实现了基于用户权限的菜单过滤,确保用户只能看到其有权访问的菜单。

// 过滤没有权限的路由菜单
this.wholeMenus = filterNoPermissionTree(
  filterTree(ascending(this.constantMenus.concat(routes)))
);

同时,通过formatFlatteningRoutes函数将嵌套的路由结构转换为一维数组格式,方便进行路由的管理和操作。

2.4 权限系统优势

4.0版本的RBAC权限系统重构带来了以下优势:

  1. 更细粒度的权限控制:支持页面级、按钮级的权限控制
  2. 动态权限加载:根据用户角色动态生成可访问路由和菜单
  3. 优化的权限校验性能:减少不必要的权限判断,提升系统响应速度
  4. 更好的可扩展性:便于添加新的权限规则和权限类型

三、其他重要更新

3.1 技术栈升级

vue-pure-admin 4.0版本对主要技术栈进行了全面升级:

  • 升级Vite到v4版本
  • 升级pnpm到v9版本,要求pnpm版本>=9
  • 升级stylelint到16版本,并遵循esm语法
  • 升级axios到最新版本
  • 更新@pureadmin/theme到最新版本,带来更友好的类型提示

3.2 新功能添加

4.0版本还添加了一些实用的新功能:

  • 项目版本实时更新检测功能
  • 视频帧拦截 - WebAssembly版本,支持MP4、MOV、AVI、WebM、MKV等主流格式

3.3 开发体验优化

为了提升开发体验,4.0版本做了以下优化:

  • 完全ESM版本,提升模块加载效率
  • 更友好的类型提示,减少开发过程中的类型错误
  • 修复了tailwindcss最新版本中collapse属性与平台class类名冲突的问题

四、升级指南

4.1 环境要求

升级到vue-pure-admin 4.0版本需要满足以下环境要求:

  • Node.js版本>18.18.0
  • pnpm版本>=8.6.10

4.2 升级步骤

  1. 克隆最新代码:
git clone https://gitcode.com/gh_mirrors/vue/vue-pure-admin.git
  1. 安装依赖:
cd vue-pure-admin
pnpm install
  1. 启动开发服务器:
pnpm dev
  1. 构建生产版本:
pnpm build

4.3 注意事项

  • 文档站点和完整版预览站点的地址已变更
  • 如果你使用了VITE_PUBLIC_PATH为url的OSS场景,需要升级@pureadin/theme到最新版本
  • 系统管理中的所有表格均改为自适应内容区域高度,需要升级@pureadmin/table到最新版本

五、总结与展望

vue-pure-admin 4.0版本通过对keepAlive缓存机制的优化、包体积的精简、构建工具的升级等手段,实现了3-4倍的页面切换提速,极大提升了用户体验。同时,RBAC权限系统的重构使得权限管理更加灵活和高效。

未来,vue-pure-admin将继续关注性能优化和功能增强,为开发者提供更优质的后台管理系统解决方案。我们计划在后续版本中引入更多先进的前端技术和最佳实践,如更完善的微前端支持、更强大的可视化组件等。

如果你觉得vue-pure-admin对你的项目有帮助,请点赞、收藏、关注三连,也欢迎在评论区留下你的使用体验和建议。让我们一起打造更好的前端开发体验!

下期预告:vue-pure-admin高级特性详解 - 从入门到精通

【免费下载链接】vue-pure-admin 【免费下载链接】vue-pure-admin 项目地址: https://gitcode.com/gh_mirrors/vue/vue-pure-admin

更多推荐