从Element Plus到OpenTiny:我用一周把后台管理系统重构了一遍,体积小了40%

从Element Plus到OpenTiny:我用一周把后台管理系统重构了一遍,体积小了40%

公司的后台管理系统用的是 Element Plus,一直没什么问题。直到有一天测试说"这个页面加载要 8 秒"。

我一看,好家伙,Element Plus 完整引入 + ECharts + moment.js,首屏 JS 体积直奔 2MB。用户用的还是 4G 网络。

于是决定换成 OpenTiny。一周搞定,效果出乎意料。

为什么选 OpenTiny

OpenTiny 是华为开源的前端组件库,主打企业级场景。跟 Element Plus 比:

Element Plus OpenTiny
组件数量 70+ 80+
按需引入包体积 ~400KB ~240KB
Tree Shaking 支持 原生支持
主题定制 CSS变量 CSS变量+Design Token
企业级场景 通用 内置审批流、表格增强

对我最有吸引力的三点:

  • 体积更小(树摇更彻底)
  • 表格组件更强(企业后台核心)
  • 内置了 Element Plus 没有的高级组件

迁移过程

第1天:替换依赖

bash 复制代码
npm uninstall element-plus
npm install @opentiny/vue

第2-3天:组件替换

大部分组件是 API 兼容的:

vue 复制代码
<!-- Element Plus -->
<el-table :data="list">
  <el-table-column prop="name" label="名称" />
</el-table>

<!-- OpenTiny -->
<tiny-table :data="list">
  <tiny-table-column prop="name" label="名称" />
</tiny-table>

花了 3 天把 40 多个页面过了一遍。改得最多的是自定义样式那部分,因为 OpenTiny 的 CSS 变量命名不太一样。

第4天:TinyGrid 替换表格

这是这次迁移的杀手锏。OpenTiny 的 TinyGrid 跟普通表格不是一个东西:

vue 复制代码
<tiny-grid :data="list" :columns="columns"
  :filter-config="filterConfig"
  :pager-config="pagerConfig"
  @filter-change="handleFilter"
  @page-change="handlePage">
</tiny-grid>

一个组件搞定:表格渲染、筛选、分页、排序、导出。以前要组合 5 个组件的事,现在一个就够了。

第5-7天:调样式 + 测试

主题定制用 Design Token:

scss 复制代码
:root {
  --ti-base-color-primary: #5e7ce0;
  --ti-table-header-bg-color: #f5f7fa;
}

改几个变量就统一了全站主题,比 Element Plus 的 SCSS 覆盖方便太多。

成果

指标 迁移前 迁移后
首屏JS体积 1.8MB 1.1MB (-39%)
首页加载时间 8.2s 3.1s (-62%)
Lighthouse分数 42 78
表格页代码行数 ~200行 ~80行

踩坑

  1. Dropdown 和 Popover API 差异大 --- 这两个组件接口不兼容,手动适配了一下午
  2. Form 校验规则格式不同 --- OpenTiny 用的是 async-validator 但字段名有变化
  3. Icon 组件需要单独引入 --- 不像 Element Plus 全局注册那么方便

写在最后

如果你的后台系统也在为体积和性能发愁,OpenTiny 值得一试。尤其表格密集的管理后台,TinyGrid 能省不少代码。

不需要一把梭全迁移,可以先从体积最大的页面开始切。一周差不多能搞定一个中等规模的系统。


本文参加「OpenTiny NEXT 前端智能化系列直播征文活动」

相关推荐
微三云 - 廖会灵 (私域系统开发)4 天前
企业大模型应用工程化思考:跳出 Demo 陷阱,构建「业务‑资产‑Agent」三层落地架构
人工智能·矩阵·重构
慧都小项4 天前
Python 跨文件重构怎么验证?PyCharm 用法查找、重构预览与测试流程
python·重构·pycharm·单元测试
江畔柳前堤5 天前
字节跳动·大模型应用知识手册
前端·人工智能·深度学习·opencv·目标检测·重构·transformer
微三云 - 廖会灵 (私域系统开发)7 天前
私域电商多端商城系统架构实践:小程序 / APP / H5 一套后端如何落地
矩阵·重构·零售
智慧物业老杨7 天前
人机协同的物业服务重构:技术落地路径与系统化思考
java·大数据·人工智能·重构·系统架构
微三云 - 廖会灵 (私域系统开发)7 天前
多端商城统一账号体系设计实践:小程序 / APP / H5 登录打通与账号合并
矩阵·重构·自动化·零售
微三云 - 廖会灵 (私域系统开发)9 天前
裂变营销系统架构设计:推三返一(三三循环)模式业务拆解、奖励算法与合规方案
重构·自动化·零售
江畔柳前堤9 天前
On-Policy Distillation 全景深潜
人工智能·网络协议·目标检测·http·机器学习·chatgpt·重构
液态不合群11 天前
低代码不是捷径,是企业数字化转型的底层重构
低代码·重构
Alinket11 天前
当 AI 走进传感器:嵌入式人工智能如何重构设备智能
人工智能·物联网·重构·健康医疗·无线通信·智能硬件·iot