管理杂谈OA答疑ERP答疑教程搜索

VTable:开源支持百万级数据的纯JS表格组件


几十万条数据一滚动就卡,一筛选就卡死?传统表格组件确实扛不住大数据量。今天聊聊开源组件 VTable,它号称能毫秒级渲染百万行数据。是真本事还是噱头?咱们直接扒一扒。

VTable 是什么?

VTable 是字节跳动旗下可视化团队开源的项目,属于 VisActor 可视化解决方案 的一部分。这个名字可能有些陌生,但 VisActor 团队在数据可视化领域已经深耕多年,服务过抖音、今日头条、飞书等多个字节系产品。

简单说,VTable 就是一个前端表格组件库,但它和你在网上找到的普通表格组件有个本质区别:它用 Canvas 画图,而不是用 HTML 元素堆表格

为什么 Canvas 就这么厉害?

要理解 VTable 的优势,得先明白传统表格是怎么工作的。

传统表格的"笨办法"

普通的 HTML 表格,每一行、每一列、每一个单元格都是一个独立的 DOM 元素。100 行×20 列的表格,就是 2000 个 DOM 节点。浏览器要为每个节点计算样式、布局、事件监听……

数据量少的时候没问题,但到了十万、百万级别,DOM 节点数量爆炸,浏览器直接"累趴下"。

有些聪明的开发者想到了虚拟滚动:只渲染屏幕上能看到的那些行,滚动了再动态创建新的、销毁旧的。这确实改善了性能,但有个天花板,可视区域内还是要创建大量 DOM 元素,列数一多就扛不住。

VTable 的"巧办法"

VTable 换了个思路:整个表格就一个 Canvas 元素,所有单元格都是用代码"画"出来的

Canvas 是什么?你可以把它理解为一块画布,JavaScript 可以在上面随意绘制图形、文字、图片。VTable 就是把表格的每个单元格当成一个小图形,用绘制指令画出来。

这样做的好处显而易见:

VTable 能做什么?

  1. 1. 基本表格


2. 透视表

  1. 3. 图表嵌入

  1. 4. 甘特图

基本上就是一个轻量级的在线 Excel。

和传统方案对比,差距有多大?

咱们用个表格易用对比一下:

能力
DOM 表格
VTable
10 万行数据渲染
卡顿/崩溃
流畅
滚动体验
延迟明显
丝滑
内存占用
自定义单元格
有限
无限
图表嵌入
困难
原生支持
学习成本
中等

可以看到,在性能和扩展性上,VTable 有明显优势。当然,如果你只是显示几十行数据,用普通表格组件更简单。

怎么用?

VTable 提供了多种框架的封装版本:

// 原生 JavaScript
import
 VTable from '@visactor/vtable';

// Vue3

import
 { VTable } from '@visactor/vue-vtable';

// React

import
 { VTable } from '@visactor/react-vtable';

配置方式也很易用:

const option = {
  columns
: [
    { field: 'name', title: '姓名' },
    { field: 'sales', title: '销售额' }
  ],
  records
: yourDataArray
};

new
 VTable.ListTable(container, option);

官方文档有详细的教程和示例,上手难度中等。

总结

如果只是想显示简单的配置表、表单,几十行数据,那用普通的 Element UI、Ant Design 表格组件就够了,没必要上 VTable。

开源地址https://github.com/VisActor/VTable
官方文档https://visactor.com/vtable


更多精彩文章浏览...
点击右上角图标分享到朋友圈
官方网站:http://www.clicksun.cn
咨询热线:400-186-1886
服务邮箱:service@clicksun.cn