Element Plus:用 60+ 组件快速构建企业级后台界面的 Vue 3 组件库
【免费下载链接】element-plus🎉 A Vue.js 3 UI Library made by Element team项目地址: https://gitcode.com/GitHub_Trending/el/element-plus
Element Plus 是 Element 团队出品的 Vue 3 组件库,60+ 组件,源码全量 TypeScript 编写。它解决的是后台系统开发里最耗工时的部分:表格、表单、弹窗、导航这些高频界面,不用从零写样式和交互,直接拼装即可,视觉一致性和行为稳定性由组件库兜底。
开始讲用法之前,先想三个你在项目里大概率遇到过的情形:
- 一个数据表格,列对齐、固定列、空状态、操作列,每个细节都要自己写几十行 CSS,做完还不一定和设计稿一致。
- 产品突然说主色从蓝换绿,你得在两百多个样式文件里逐个翻,改完还容易漏。
- 国际化、暗色模式、屏幕阅读器支持,每次都是新活,每次都要重新做一遍。
Element Plus 的定位,就是把这三类事从"项目级专项"变成"开箱即用"。
组件覆盖面:表格和表单的样式不用你写了
先说表格。ElTable默认就带排序、筛选、固定列、树形数据和展开行这些能力,配合ElForm的校验系统,后台最重的两块业务界面基本不需要再碰 CSS。它在仓库里是 packages/components/table/ 这个独立目录,源码可读可改,不是黑盒。
<!-- 标准数据表格:列声明 + 操作列,不用写一行样式 --> <el-table :data="rows"> <el-table-column prop="name" label="姓名" width="180" /> <el-table-column prop="address" label="地址" /> <el-table-column label="操作" width="160"> <template #default="{ row }"> <el-button size="small" @click="edit(row)">编辑</el-button> </template> </el-table-column> </el-table>每个组件在 packages/components/ 下都有自己的子目录,配套的文档和示例放在 docs/examples/,80 多个组件文档基本都配了可直接运行的 demo,遇到不确定的用法先查那里,比翻源码快。
主色一行改掉:主题定制的 CSS 变量路线 ⚡
Element Plus 的全部样式建立在 CSS 变量上,组件不写死颜色。想换主色、圆角、字号,改:root下的变量即可,所有组件级联生效:
/* 覆盖全局变量:一处修改,所有组件的颜色和圆角随之生效 */ :root { --el-color-primary: #409eff; --el-border-radius-base: 8px; }想改得更深也不止于变量。packages/theme-chalk/src/ 下是 140 多个 scss 源码文件,从全局变量表到单个组件的样式规则都在里面,构建自己的定制主题时可以直接抄这份组织方式。暗色模式则是给根节点加一个darkclass 的事,细节可以看仓库里的 dark-mode 指南。
国际化、无障碍、SSR:这些工程项不用自己做
国际化方面,packages/locale/ 内置了 67 个语言包,ElConfigProvider的locale属性一传,组件内部文案全部跟着切:
<!-- 切换组件内置文案:给 config-provider 传一个语言包即可 --> <el-config-provider :locale="ja"> <el-button>提交</el-button> </el-config-provider>无障碍(WAI-ARIA 语义)是组件内置的,弹层组件自带焦点管理,不需要你在业务里补 aria 属性。服务端渲染也有专门的保障:仓库里的 ssr-testing/ 目录对 50 多个组件跑了真实的 SSR 渲染测试,你在 SSR 项目里用它不必担心"浏览器环境依赖"这类坑。
完整场景:四步拼出一张后台页面
把这些能力串起来,一个典型的后台页面大概是这样落地的。
第一步,安装并全局注册:
// main.ts:注册组件库并引入基础样式,SSR 项目则按需导入 import { createApp } from 'vue' import ElementPlus from 'element-plus' import 'element-plus/dist/index.css' import App from './App.vue' createApp(App).use(ElementPlus).mount('#app')第二步,用布局组件搭骨架,ElContainer系列对应的是经典的上下左右结构:
<!-- 布局骨架:顶栏 + 侧边菜单 + 主内容区,三层嵌套 --> <el-container> <el-header>管理系统</el-header> <el-container> <el-aside width="200px"> <el-menu><el-menu-item index="1">用户管理</el-menu-item></el-menu> </el-aside> <el-main><el-card>数据统计</el-card></el-main> </el-container> </el-container>第三步,主内容区放前面提到的表格加搜索表单,操作列里挂按钮。第四步,交互反馈交给全局方法:提交成功调ElMessage.success,危险操作前用ElMessageBox.confirm弹确认框,加载态用ElLoading指令。全程不需要引入额外的状态管理或提示库。
进阶细节:三个真正省时间的配置
按需导入:别把整个组件库打进包里
完整引入适合快速启动,上线前建议切到unplugin-vue-components,用到了哪个组件才打包哪个,样式也按组件粒度进:
// vite 配置:unplugin 自动导入用到的组件及其样式 import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' export default defineConfig({ plugins: [Components({ resolvers: [ElementPlusResolver()] })], })上万行数据:交给 ElTableV2 的虚拟滚动
普通ElTable渲染到几千行开始吃力,ElTableV2是虚拟滚动实现的独立表格,配合固定列宽和行高,数据量上去也不用拆分页。后台里"全部数据"这种页面可以直接用它。
二次封装:把确认弹窗收敛成一个组件
项目里"确定删除吗"会反复出现,与其到处写ElMessageBox的回调,不如封装一层ConfirmDialog,统一按钮文案和 Promise 返回值,业务代码里只剩一行调用。封装时注意透传modelValue的update事件,这也是 Element Plus 组件本身遵循的协议。
下一步
如果打算把这个组件库用起来,三件事按顺序做就行:
- 把仓库 clone 下来本地跑一遍文档示例,
git clone https://gitcode.com/GitHub_Trending/el/element-plus之后按贡献指南装依赖,play/ 目录就是一个现成的 playground,改代码即时看效果。 - 如果你的设计稿有定制色板或圆角规范,直接对照 packages/theme-chalk/src/ 里的变量表做覆盖,别去改组件内联样式。
- 产品提到暗色模式或多语言需求时,先读 dark-mode 指南 和 packages/locale/lang/ 的语言包结构,这两个方向官方已经把 90% 的活干完了。
【免费下载链接】element-plus🎉 A Vue.js 3 UI Library made by Element team项目地址: https://gitcode.com/GitHub_Trending/el/element-plus
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考