花了一天时间,开源了一套精美且支持复杂操作的表格编辑器tablejs

之前和大家分享了我实现的 pxcharts 多维表格编辑器和协同文档编辑器:

写了一款高性能的协同文档编辑器

pxcharts多维表格ultra版:支持百万数据渲染的多维表格编辑器!

最近在研究多维表格的技术实现,花了一天时间,手写了一个复杂表格的 demo,用原生 js 实现,所以我们可以轻松集成到 Vue 或者 React 项目中。

目前我已经在github上开源,感兴趣的可以参考一下:

github地址:github.com/MrXujiang/t...

接下来就和大家分享一下它的技术实现和功能亮点。

功能亮点介绍

这款在线表格编辑器支持多条件筛选、分组展示、批量多选、图片上传与压缩、导出为 CSV/JSON、本地持久化、快捷键等特性。在 VTable 可用时启用增强型表格能力;在不可用时自动降级为简化版 HTML 表格,保障核心编辑体验。

1. 表格编辑能力

我们可以双击编辑表格单元,并支持拖拽列宽,表头排序等功能:

2. 表格单元格多选,框选,批量选择功能

我实现了类似excel表格的多选,框选单元格的功能,并支持表行的批量选择,演示效果如下:

3. 支持复杂分组功能

设置根据某个分组来切割表格之后,我们可以实现表格的展开收起子表的效果:

4. 支持多条件筛选功能

我们可以用多种组合筛选条件进行表格的数据筛选。

5. 动态添加行列的功能

对于表格列,我们可以动态地添加,并支持实时渲染。

6. 导出能力

目前我也实现了表格的数据导出能力,比如导出json,导出CSV格式的文件:

当然还有很多功能,后续我会在架构专栏和大家详细分享。

解析来和大家分享一下我的技术选型和技术实现。

技术栈

  • 编程语言 : 原生 JavaScript (ES6+)、HTML5、CSS3
    • 选择原因:零依赖易分发、可运行在任意现代浏览器;ES6 提供 class、模块化与更清晰的语义。
  • 数据表格组件 : @visactor/vtable(CDN 按需加载)
    • 选择原因:高性能网格、内置编辑/选择/排序/主题支持;当加载失败时,项目提供简化版替代实现。
  • UI/图标 : Font Awesome 6(CDN)、原生 CSS(styles/
    • 选择原因:快速构建现代化 UI;无框架约束、样式可控。
  • 数据持久化 : 浏览器 localStorage
    • 选择原因:纯前端离线可用、无需后端依赖。
  • 文件处理 : File API、Canvas(图片压缩)、Blob/URL API(下载)
    • 选择原因:原生能力满足图片压缩与导出需求。
  • 开发与运行: 无构建依赖,任意静态服务器即可运行(Python/Node/PHP 内置服务器)。

代码结构

bash 复制代码
dotable/
├─ index.html               # 入口与页面结构
├─ styles/                  # 样式(主样式/表格/组件/模态)
├─ js/
│  ├─ app.js                # 应用协调、生命周期、快捷键、导出/保存
│  ├─ tableManager.js       # VTable 增强表格管理
│  ├─ simpleTableManager.js # 简化 HTML 表格实现(降级)
│  ├─ filterManager.js      # 多条件筛选(条件动态表单/应用/清除/导入导出)
│  ├─ groupManager.js       # 分组(VTable/简化两套渲染策略)
│  ├─ imageManager.js       # 图片上传/压缩/预览/回填/导出
│  ├─ multiSelectManager.js # 框选/多选与批量操作
│  └─ utils.js              # 通用工具集
├─ test*.html/js            # 测试与演示页面/脚本
└─ README.md                # 技术文档

整个技术实现我采用的是js的类,并加持了插件化系统架构,如果大家想学习js架构和算法设计,这个项目是非常不错的选择。

github地址:github.com/MrXujiang/t...

如果你有好的想法,欢迎留言区交流反馈!

相关推荐
IronMurphy6 小时前
【算法四十三】279. 完全平方数
算法
Hommy886 小时前
【开源剪映小助手】API 接口文档
开源·github·aigc·视频剪辑自动化·剪映api
墨染天姬6 小时前
【AI】Hermes的GEPA算法
人工智能·算法
QQ1__8115175156 小时前
Spring boot名城小区物业管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
前端·vue.js·spring boot
钛态6 小时前
前端微前端架构:大项目的救命稻草还是自找麻烦?
前端·vue·react·web
一粒黑子6 小时前
【实战解析】阿里开源 PageAgent:纯前端 GUI Agent,一行JS让网页支持自然语言操控
前端·javascript·开源
独角鲸网络安全实验室6 小时前
2026微信小程序抓包全解析:从实操落地到合规风控,解锁前端调试新范式
前端·微信小程序·小程序·抓包·系统代理绕过·https证书严格校验·进程隔离
紫微AI6 小时前
前端文本测量成了卡死一切创新的最后瓶颈,pretext实现突破了
前端·人工智能·typescript
GISer_Jing6 小时前
AI前端(From豆包)
前端·aigc·ai编程
IT枫斗者6 小时前
前端部署后如何判断“页面是不是最新”?一套可落地的版本检测方案(适配 Vite/Vue/React/任意 SPA)
前端·javascript·vue.js·react.js·架构·bug