Element Plus
Vue 3 中后台组件库,Element UI 的官方 Vue 3 继承者
精选工具Vue企业级组件库中后台TypeScript
Element Plus 是饿了么团队出品的 Vue 3 企业级组件库,提供 70+ 高质量组件,原生 TypeScript 支持,CSS 变量主题定制和按需引入,是国内 Vue 3 中后台领域最流行的组件库。
Element Plus
Vue 3 中后台组件库,Element UI 的官方 Vue 3 继承者
基本信息
- 官网:https://element-plus.org(中文:https://element-plus.org/zh-CN)
- GitHub:https://github.com/element-plus/element-plus
- License:MIT
- 最新版本:2.14.2(2026-06-12 发布)
- 主要维护者/公司:Element 团队(原饿了么前端团队),社区驱动
- 首次稳定版:2022 年 2 月 7 日
- npm 周下载量:约 35 万(2026 年初)
- GitHub Stars:27.6k+
- Node.js 要求:>= 20
- 源码语言:TypeScript 58.2%、Vue 40.7%
核心特性
- 完整的 Vue 3 支持:基于 Vue 3 Composition API 全面重写,完美支持
<script setup>语法与响应式系统 - TypeScript 原生:全部使用 TypeScript 编写,提供完整类型定义和智能提示
- 70+ 高质量组件:覆盖表单、表格、导航、数据展示、通用视图等中后台常见场景
- 按需引入:通过
unplugin-element-plus实现组件与样式的自动按需加载,大幅减小打包体积 - 主题定制:基于 CSS 变量(CSS Variables)的动态主题系统,支持运行时换肤,无需重新编译 SCSS
- 国际化:内置 52 种语言包,支持自定义扩展
- 无障碍访问(A11y):组件遵循 WAI-ARIA 规范,支持键盘导航与屏幕阅读器
- 暗色模式:官方提供 CSS 变量驱动的暗色主题方案
适用场景
- 企业中后台管理系统:Element Plus 的核心定位,适合 ERP、CRM、OA、数据分析平台等重数据交互场景
- 内容管理后台(CMS):配合 Vue 3 + Nuxt 构建内容管理系统的管理界面
- 快速原型开发:组件丰富、文档完善,适合快速搭建 MVP 或内部工具
- 数据密集型应用:内置强大的 Table、Tree、Cascader、Select 等数据组件,适合处理复杂数据展示
- 国际化项目:52 种语言覆盖,适合面向全球用户的多语言产品
技术亮点
TypeScript 全面支持
Element Plus 使用 TypeScript 从零重写,所有组件 Props、Emits、Slots 均有完整类型定义。配合 unplugin-element-plus 和 unplugin-auto-import,可在 <script setup> 中获得完整的自动补全和类型推导,开发体验优秀。
<script setup lang="ts">
import type { FormInstance, FormRules } from 'element-plus'
const formRef = ref<FormInstance>()
const rules: FormRules = {
name: [{ required: true, message: '请输入名称', trigger: 'blur' }]
}
</script>主题定制体系
采用 CSS 变量替代 Element UI 时代的 SCSS 变量编译方案,支持运行时动态切换主题:
- 全局覆盖:通过
:root自定义 CSS 变量 - 组件级覆盖:通过
el-config-provider局部覆盖样式变量 - 暗色模式:通过切换 CSS 变量类名实现,无需额外打包
按需引入与 Tree Shaking
基于 ES Modules 原生 Tree Shaking,配合官方插件实现自动按需引入:
unplugin-element-plus:自动按需引入组件与对应样式unplugin-vue-components:自动注册组件,无需手动 importunplugin-auto-import:自动引入 Vue API(ref、computed 等)和 Element Plus API
性能优化
- 组件内部使用 Vue 3 的
shallowRef、computed等精细控制响应式粒度 - 虚拟滚动 Table(
el-table-v2)支持大数据量渲染 - Tree Select(
el-tree-select)虚拟化渲染
与 Vue 2 Element UI 的关键区别
| 维度 | Element UI (Vue 2) | Element Plus (Vue 3) |
|---|---|---|
| Vue 版本 | Vue 2.x | Vue 3.x |
| 编写语言 | JavaScript | TypeScript |
| API 风格 | Options API | Composition API |
| 包名 | element-ui | element-plus |
| 图标 | 内置字体图标 | 独立包 @element-plus/icons-vue |
| 主题定制 | SCSS 变量编译 | CSS 变量(支持运行时) |
| 按需引入 | babel-plugin-component | unplugin-element-plus |
| 组件 API | 部分属性命名不一致 | 统一命名规范(如 size 值从 mini/small 改为 small) |
| 迁移工具 | — | 官方提供 GoGoCode 自动化迁移脚本 |
生态集成
Nuxt 3
官方提供 @element-plus/nuxt 模块,一键集成:
pnpm add element-plus @element-plus/nuxt// nuxt.config.ts
export default defineNuxtConfig({
modules: ['@element-plus/nuxt']
})支持自动按需引入组件、样式、指令和图标,无需手动配置。
Vite
通过 unplugin-element-plus 官方插件实现按需引入,同时支持组件自动注册和 API 自动导入:
// vite.config.ts
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
export default {
plugins: [
AutoImport({ resolvers: [ElementPlusResolver()] }),
Components({ resolvers: [ElementPlusResolver()] })
]
}Vue Router & Pinia
完全兼容,无特殊配置要求。Element Plus 的组件(如 Menu、Tabs)与 Vue Router 天然配合,el-menu 的 router 属性可直接启用路由模式。
构建工具支持
- Vite:
unplugin-element-plus(推荐) - Webpack:
unplugin-element-plus或babel-plugin-component - Rollup:
unplugin-element-plus - esbuild:
unplugin-element-plus
官方生态工具
| 工具 | 说明 |
|---|---|
@element-plus/icons-vue | 图标包(独立维护) |
unplugin-element-plus | 按需引入插件(支持多构建工具) |
@element-plus/nuxt | Nuxt 3 官方模块 |
| Element Plus Figma Kit | Figma 设计资源 |
第三方扩展
| 项目 | 说明 |
|---|---|
| Element-Plus-X | 社区扩展组件库,提供 Markdown 渲染、打字机、气泡列表等增强组件 |
| vue-element-plus-admin | 基于 Element Plus 的企业级后台框架 |
| vue-vben-admin | 集成 Element Plus 的开源后台模板 |
学习资源
官方文档
- 快速开始 — 安装、按需引入、国际化配置
- 组件总览 — 全部组件分类预览
- 更新日志 — 版本变更记录
- 迁移指南 — 从 Element UI 迁移到 Element Plus
- 主题定制 — CSS 变量主题方案
视频教程
社区资源
- GitHub Discussions — 官方讨论区
- GitHub Issues — Bug 反馈与功能讨论
- 掘金社区 — 大量中文实践文章,搜索 "Element Plus"
- vue-element-plus-admin 文档 — 企业级后台开发参考
迁移资源
- Element UI → Element Plus 迁移指南
- GoGoCode 自动化迁移工具 — 官方推荐的代码迁移方案
- 升级变化汇总(2.5.0+) — 每个版本的 Breaking Changes 记录
2026 年现状
版本与发布节奏
- 最新版本:2.14.2(2026-06-12),保持每周 1-2 次的发布节奏
- 累计发布:245 个版本,7,686 次提交
- 维护状态:活跃维护,Issue 和 PR 处理持续进行
近期版本特性(2025-2026)
- 2.14.x:Table 新增
getHalfSelectionRows方法、Tree 组件增强、DatePicker 改进 - 2.13.x:Input 新增
count-graphemes属性支持自定义字符计数、Dialog 点击自动置顶 - 2.12.0:持续迭代优化
- 2.11.0:新增 Color Picker Panel、Date Picker Panel 等独立面板组件
社区活跃度
- GitHub Stars 稳定在 27.6k+,Forks 19.9k
- npm 周下载量约 35 万,在国内 Vue 3 生态中仍是下载量最高的中后台组件库
- 全球范围内与 Vuetify(Material Design 风格)形成主要竞争
与同类库对比
| 维度 | Element Plus | Vuetify 3/4 | Ant Design Vue |
|---|---|---|---|
| 设计风格 | 简洁实用,中式审美 | Material Design | Ant Design 规范 |
| Vue 3 支持 | 原生 Vue 3 | 原生 Vue 3 | 原生 Vue 3 |
| 组件数量 | 70+ | 80+ | 60+ |
| 国内使用率 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| 国际化 | 52 种语言 | 多语言 | 多语言 |
| 适合场景 | 中后台、管理系统 | 全球化产品 | 企业级应用 |
发展趋势
- 持续跟进 Vue 3.x 最新特性,保持与 Vue 核心的兼容性
- 组件 API 趋于稳定,Breaking Changes 较少
- 第三方生态持续扩展:Nuxt 模块、自动导入插件、后台管理模板日趋成熟
- 在国内 Vue 3 中后台领域保持主导地位,是大多数国内团队的首选组件库