钉钉同构表技术应用
如果无法正常显示,请先停止浏览器的去广告插件。
1. 钉钉同构表技术应用
来自钉钉文档团队的谢光磊(叶斋)
2. 关于讲师
‣ 谢光磊,花名叶斋。
‣ 南京大学地理系;中科院遥感应用研究所。
‣ 14 年校招进入淘宝前端,19 年加入钉钉文档,目前负责钉钉文档表格类产品研发。
‣ 译过《WebGL 编程指南》等 3 本前端书籍,开源 WebGL 引擎 G3D 的作者。
‣ 邮箱:xieguanglei@hotmail.com
‣ 博客:https://xieguanglei.github.io
3. 释题:同构表 vs 异构表
严格行列组织
增删行
字体字号颜色
增删列
左右垂直对⻬居中
定义列类型
边框样式
异构表
(排版表)
合并单元格
同构表
(数据表)
筛选
排序
背景色
分组
非严格行列
聚合
联合
4. 钉钉同构表一瞥
5. 钉钉同构表一瞥
6. 钉钉同构表一瞥
业务层
应用层
基础组件
多表切换
埋点
国际化
表格组件层
表格渲染器
交互接口
表格编辑器
配置器
模型层
基础层次模型
统计分析管线
公式计算
操作接口
7. 大数据量场景下的性能保障
‣ 同构表支持了十万行级别的数据,百万级的单元格
‣ 在⻚面里塞百万个 div 元素……
‣ 虚拟滚动:JavaScript 中维护滚动偏移量,手动把单元格放到目标位置上去
8. 「屏幕上只有这么多像素。」
今天,JS 能够轻易 handle 的数据量级,早已远远超出了一块屏幕的像素数量。
所以今天,前端页面的渲染问题,不管是 DOM 渲染还是其他 Canvas 什么的,
页面再庞大,内容再多,交互再复杂,在这句话面前都没有太大辩驳的余地。
9. 大数据量场景下的性能保障
‣ 计算却实实在在地发生着……
‣ 模型层全部放在 Worker 里去跑
‣ 通信的成本岂不是很高?
‣ 数据切片:只拿当前视窗内的数据
10. 开发文档类产品,本质上就是在开发桌面应用
Worker 这件事使我意识到,当我开始做类似文档这种复杂前端应用时,其实就
已经是在开发桌面应用或原生 App 了。桌面应用面临的场景,遇到的问题,在
做文档级 Web 应用时,一个都不会少。
11. 桌面应用 vs Web 应用
WinForm / QT vs DOM & BOM
多线程 vs Web Worker
文件系统 vs LocalStorage
数据库 vs IndexDB
GDI / Skia vs Canvas
OpenGL / DX vs WebGL
Socket vs WebSocket
12. 多提一句 TypeScript
C++,C#, Objective-C / Swift,Java,Dart:开发桌面应用或原生 App,从来
都是强类型语言。
13. 敏感、合理的键盘响应
‣ 从「选中」到「编辑」,敏感的键盘响应
‣ 有多少人熟悉 onCompositionStart, createRange 这些「冷⻔」API 呢?
‣ 另一个例子:无线设备键盘弹起时,究竟发生了什么?
14. 重新认识浏览器
冷门的知识,在 MDN 上几乎没有任何解释的 API,突然成了救命稻草。这些
API,很可能和操作系统一一映射。
15. 多提一句 React
React 很棒,但 React 不是银弹。事实上,React 也没有经过文档级应用的检
验,需要大量性能优化的 MVVM 可能不适合文档。
16. 钉钉文档团队
背景:
* 阿里巴巴投入最大,HC 最多的文档团队
*
关于团队和招聘
钉钉,亿级 DAU,无限想象空间
我的做的事情:
*
*
基础产品:
* 钉盘,对标 OneDrive。
* Office 三件套:文字,表格,演示;全部自研
业务透出:
* 日志,知识库。
* OA 后台,远程会议,在线教育
有意者请联系我!
17. 完
18. 推荐一本书
*
OpenGL 红蓝宝书相比,这本书里所有的实
践都是基于前端技术栈的。
*
与其他讲 Web 3D 的书相比,这本书讲图形
学的底层原理,偏理论。
*
很适合前端程序员入门计算机图形学。