从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 前端智能化系列直播征文活动」

相关推荐
开目软件2 天前
圆满验收 | 泰胜风能 & 开目MOM,数智重构风电塔筒制造内核
重构·制造
KKKlucifer3 天前
国内数据安全服务的产品智能化转型:大模型赋能下的技术能力重构分析
大数据·数据库·重构
nm_zfyjt3 天前
信息流广告投放优化实践:线索成本评估模型与转化链路重构(家装建材案例)
算法·重构·内蒙古朋友圈广告服务商·内蒙古朋友圈获客
WiKiLeaks_successor3 天前
重构Time库的抽象设计
python·重构
小瓜6693 天前
Claude Code替代软件哪个好?TRAE vs Claude Code深度对比:从中文开发、复杂重构到团队成本
重构
爱聊灵光的维C4 天前
从看见世界到重构认知:在视觉与硬件的交汇处,寻找我们这代人的北极星
c语言·物联网·计算机视觉·重构·硬件工程·射频工程
Allen_LVyingbo4 天前
NVIDIA CUDA Tile 在医疗计算中的算子形式化、算法重构与内核实现
大数据·python·算法·重构·知识图谱·健康医疗·数据库架构
AI_work4 天前
43 号令下招投标全流程留痕分析:电子卷宗 15 年保存与投标人文档合规体系重构
大数据·人工智能·ai·重构
不是万能的豆学长5 天前
游戏重构生活平衡新方式
游戏·重构·生活
云边有个稻草人5 天前
MongoDB迁移不止是数据搬家:用KingbaseES重构文档数据开发
数据库·mongodb·重构·国产数据库·信创数据库·数据库国产化·mongodb迁移