油炸小可爱 SpreadJS 前端表格技术分享,硬核干货:葡萄城( 二 )
为此 , SpreadJS纯前端表格控件引入了Canvas绘制模型和双缓存画布技术 , 具体实现方式如下 。
为了解决这个问题 , 前端框架React和Vue3均采用了虚拟DOM的方式 , 而SpreadJS则采用了一种更为先进的方式——HTML5Canvas绘制 。
使用Canvas绘制 , SpreadJS不仅无需重复创建和销毁DOM元素 , 在画布的绘制过程中 , 更是打破了DOM元素渲染对UI的诸多限制 。 SpreadJS可以绘制种类更为丰富的UI元素 , 如线形、特殊图形等 , 通过画法逻辑 , 还可以实现更加精准的UI界面渲染 , 解决了浏览器差异造成的样式误差 。
但如果只使用一个画布进行渲染 , 那么每次绘制时 , 不论是主体图层还是装饰图层 , 都需要通过画法逻辑将所有元素进行绘制 , 这显然是低效的 。
双缓存画布技术
为此 , SpreadJS又引入了双缓存画布的机制 , 将不易改变的主体图层绘制在缓存画布中 , 在发生渲染行为时 , 只需要将缓存画布中的主体图层直接通过图像克隆的方式绘制在主画布上 , 并附加绘制装饰图层元素 , 便可大大优化整个绘制性能 。
SpreadJS双缓存画布的技术特点:
类似油画的分层绘制 。SpreadJS的绘制引擎基于油画的绘制原理 , 分为主体图层和装饰图层 , 主体图层渲染持久的、不易改变的元素 , 例如背景 , 单元格 , 表格线等 。 装饰图层则渲染常变性元素 , 如选择框、拖拽框、悬浮效果等 。
使用缓存画布 。当发生动态绘制 , 如表格滚动时 , SpreadJS会将主画布清空 , 从缓存画布中根据行为上下文进行画布偏移 , 将偏移后的图层直接绘制在主画布上 , 再在主画布上绘制剩余部分 , 使整个表格的滚动过程更加流畅 。
2.基于行模式的稀松矩阵存储策略 , 大幅节省内存消耗
随着前端工程化的高速发展 , 各种前端工程脚手架日渐成熟 , WebComponent标准被提上日程 , 企业开始由C/S向B/S应用转型 。 这就要求前端开发者 , 需要面对单线程处理复杂业务数据的挑战 。 这里的复杂 , 不仅仅是数据量大 , 更是数据状态的处理 。 如何高效的解决数据的前后端交互 , 如何快速响应数据变更及数据回滚呢?
为此 , SpreadJS又提出了一个行之有效的解决方案——稀松矩阵 。
- 中安在线|【地评线】中安时评:“小可爱”为“大可爱”撑伞是节日最好的礼物
- 电竞小可爱|休闲娱乐玩什么?梦迹沙河第一选择!一起体会这绝妙的快乐
- 零食|其实有些是可以放心吃的!怀孕后最想偷吃的零食
- 油炸小可爱|打造个性vivo iQOO 3手机,时尚创意保护壳精选
- 狐机堂娇小可爱,像壹号本这样小笔记本,有人买么?
- 油炸小可爱|释放5G红利必须找到更多“杀手级”应用
- 油炸小可爱|光要多久才能到地球?
- 是小可爱|插足陈美琪与马清伟这段婚姻的第三者是谁?风流富商马清伟,心里应该最清楚
- 油炸小可爱|推特公布其安全事故起因 并彻底加强防范措施
- 青年微胖千万别乱穿!显胖又土味,尤其第3种