api 设计有点问题,一边说高性能,一边整个组件直接丢个 data array 就渲染,还不如上个虚拟容器简单。
而且 canvas 对 sheet**本身**的性能影响不大,而是针对不同浏览器之间排版引擎(对齐、字体显示等)的性能问题。看了看 example 你这个只支持 chrome ,那 canvas 其实毫无优势,徒增开发难度,不如套个 tanstack/table + 虚拟滚动
而且个人认为设计一个新的 sheet 组件,从产品上基本的亮点应该是多人协作( yjs )和支持连接 database (例:
https://baserow.io/)。如果这些都没有直接还不如打开 office 365 ,或者 Google sheet 。
另外,如果从一款好用的开源 excel component 考虑,从设计角度上应该最外层有一层 data fetcher 做 lazy load (例子:
https://refine.dev/)、支持自定义 cell type ( plugin system )这些应该一开始就留有余地,后面改起来的难度和重写一样;计算公式上实现起来又是一个大坑,如果要做动态计算(改一改 cell 相关的 cell 也会更新),要有一个 hypergraph (或者起码是个图),每次加函数做回路检测和 cell 更新,而且计算公式市面上产品都是非常非常基础,从 ws office 就有的那点东西,我觉得可以套一个 serverless 函数,支持 python 科学计算( google sheet 插件里面貌似有类似的功能)
P.S. 这也是我目前在做的东西,以上为个人一点浅见