×

实战:Vue3 + Element Plus 打造高效通用表格组件

独孤求败 独孤求败 发表于2026-02-04 09:28:22 浏览32 评论0

抢沙发发表评论

在后台管理系统开发中,表格是最核心的 UI 组件之一。大多数项目需要频繁处理表格的分页、筛选、排序、自定义列等需求,如果每次都重复编写逻辑,不仅效率低,还容易出现代码不一致的问题。本文将基于 Vue3 + Element Plus,封装一个可复用、高扩展、易维护的通用表格组件,帮你彻底解决表格开发的重复工作。

一、技术栈说明

  • Vue3:采用<script setup>语法糖(组合式 API),更简洁的代码组织方式
  • Element Plus:Vue3 生态中最成熟的 UI 库,提供了基础的 ElTable 组件
  • Pinia(可选):本文暂不涉及状态管理,聚焦组件封装本身
  • Vite:Vue3 官方推荐的构建工具(环境搭建不做赘述)


二、需求分析

我们要封装的通用表格需要满足以下核心需求:

微信图片_2026-02-04_091744_308.png

  • 支持自定义列配置(标题、字段、宽度、格式化、自定义渲染)
  • 内置分页功能,与表格数据联动
  • 支持表格排序、单选 / 多选
  • 支持自定义操作列(如编辑、删除按钮)
  • 提供加载状态、空数据占位提示
  • 暴露通用方法(如刷新数据、重置筛选条件)

三、环境准备

首先确保你的项目已安装依赖:

图片.png

main.js中全局引入 Element Plus:

图片.png

四、通用表格组件封装

components目录下新建CommonTable.vue,这是我们的核心组件:

图片.png

图片.png

js代码:

图片.png

图片.png

图片.png

css部分:

图片.png

五、组件使用示例

在父组件(如UserList.vue)中使用我们封装的通用表格:

图片.png

图片.png

图片.png

图片.png

图片.png

六、组件扩展建议

六、组件扩展建议
  1. 筛选功能:可以在通用表格中增加筛选栏配置,支持输入框、下拉框等筛选条件;
  2. 导出功能:集成xlsx库,增加表格数据导出 Excel 的功能;
  3. 行编辑:支持表格行内直接编辑,无需弹窗;
  4. 固定列:在列配置中增加fixed属性,支持左右固定列;
  5. 权限控制:结合权限系统,控制列的显示 / 隐藏、操作按钮的禁用 / 显示。

总结

  • 基于 Vue3 + Element Plus 封装通用表格组件,核心是通过Props 接收配置插槽实现自定义渲染Emits 暴露交互事件,兼顾通用性和扩展性;
  • 通用表格组件可覆盖后台系统 80% 以上的表格场景,大幅减少重复代码,提升开发效率;
  • 封装思路可迁移到其他组件(如表单、弹窗),核心是提取通用逻辑预留扩展入口,让组件既通用又灵活。

通过这个通用表格组件,你可以告别重复的表格开发工作,将精力聚焦在业务逻辑上,同时保证项目代码的一致性和可维护性。


群贤毕至

访客