由 Rust + WebAssembly 驱动
在浏览器里流畅浏览 10 万行以上的表格数据:排序、全文搜索、滚动都不卡顿。数据的生成、存储、排序、过滤全部在 WASM 中完成,页面上始终只有约 40 行 DOM 元素。
static STORE: Mutex<Option<Store>> 中。JS 不持有完整数据,只按需取一小段。order: Vec<usize>,交换的是 8 字节的整数,而不是整行字符串。order。空查询时恢复全部行。总行数 × 37px 的占位元素撑出滚动条。滚动时根据 scrollTop / 37 算出第一条可见行,只渲染这之后的 40 行,并用绝对定位把它们放到正确的位置。generate_rows(n):Rust 生成 n 行示例数据并保存在 WASM 内存中。sort_by_column(列, 升序) 和 filter_rows(关键词):Rust 更新下标数组,返回结果行数。get_page(起始行, 40),Rust 把这一小段数据拼成 JSON 字符串返回。<tbody>。serde,JSON 由 get_page() 手工拼接,WASM 体积因此更小。源码crates/algorithms/data-table/src/lib.rswww/data-table/index.js