油炸小可爱|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又提出了一个行之有效的解决方案——稀松矩阵 。
- 油炸小可爱|并彻底加强防范措施,推特公布其安全事故起因
- 夜放小可爱|联名特别版葡萄牙计时表,IWC与英国男装品牌合作
- 油炸小可爱|如今买手机到底是在线上买好还是线下?
- 小可爱星|亚马逊开店必备知识(完结篇)
- 油炸小可爱|广西多个景点开通移动5G网络
- 油炸小可爱|台积电突然宣布:或将于9月15号断供华为
- 油炸小可爱|华为mate40会搭载天玑芯片?,苹果如临大敌!华为将与联发科合作
- 油炸小可爱|中国电信打造100元纯VoLTE功能手机:目标年底用户达2亿