您的位置:首页 > 互联网

硬核干货:葡萄城前端表格技术分享

发布时间:2022-07-14 06:47:38  来源:互联网     背景:

  表格作为数据呈现的一种基本方式,在各类软件系统都发挥着重要的作用。在移动互联时代,即便再复杂的数据通过“表格”的整理,都可以清晰的呈现给用户,并支持用户从多个维度查看、筛选和修改。不论是应对文档、报告、凭证,还是票据,表格都能够附加存储更多的样式信息,尤其对离散式数据存储更加高效。

  如今,企业开始纷纷尝试信息化转型,前端、后端、中台、云,这些概念也逐渐变得家喻户晓,在几乎所有的B端产品中,表格都作为一种交互式组件受到广泛欢迎。

  不过即便如此,表格也经常因为样式复杂、操作繁琐等因素,在用户使用时造成诸多体验问题,尤其在Web项目中,表格技术时常受限于前端性能制约。

  那么,有没有一种办法,可以帮助开发者突破前端表格技术的困境,实现关键技术落地呢?

  2020年6月30日,作为全球领先的软件开发技术提供商,葡萄城举办了“赋能·智变”线上品牌战略发布会。本次会议上,葡萄城正式发布“赋能开发者”业务使命,并就前端表格开发等技术话题进行了分享。

  前端表格为开发者带来困扰

  在C/S架构的应用程序中,表格类组件可以获取更多资源支持,内存控制也更加直接。但是当企业进行B/S转型时,前端表格却面临着诸多挑战。

  例如,多浏览器差异、浏览器沙箱机制、内存访问受限、客户端性能低下等。在驳杂且质量参差不齐的前端开发环境中,这些问题都会使我们在开发应用时,消耗大量的时间和重复编码,而无法专注于核心业务。不但耗时、耗力,加剧软件开发成本,更可能因为外部环境的变更,使系统的稳定性受到冲击,使后期维护成本飙升。

  总结来说,开发前端表格主要有三个技术难点:性能、内存消耗和可靠性

  为了应对这些技术难点,葡萄城结合了多年来的表格开发技术经验,推出了一款可提升系统性能、可靠性,降低内存消耗的纯前端表格控件 —— SpreadJS。

  葡萄城 SpreadJS 表格控件技术

  针对前端表格开发的三大技术难点:性能、内存消耗和可靠性,SpreadJS分别提出了应对措施:

  · 基于双缓存画布绘制引擎,SpreadJS实现了极高的处理性能

  · 基于行模式的稀松矩阵存储策略,SpreadJS可大幅节省内存消耗

  · 基于计算引擎技术,SpreadJS可实现稳定可靠的应用系统

  基于双缓存画布绘制引擎,实现性能提升

  在企业的应用中,数据是唯一的主干,而作为数据载体的表格,经常被“吐槽”卡顿,UI界面“假死”,界面操作不流畅等。

  引起这些问题的症结在于浏览器渲染引擎的基础原理:当界面元素越多,浏览器的渲染时间会显著增长,内存消耗会越大。

  举例来说,现代应用程序为了追求更好的用户体验,需要对UI界面反复优化,而频繁的修改界面UI元素,将引发多次浏览器重绘。在这个过程中,UI元素的创建及修改,会激活内部垃圾回收机制,影响数据处理效率。

  除此之外,前端开发环境的多样化、各类高DPI设备、手机、平板、4K显示屏、企业大屏等,这些无不加重了企业应用系统的处理负担。

  对于经常用于展示大数据量的表格来说,性能至关重要。也就是说,任何基于表格开发的应用系统,必须满足以最低的资源消耗,实现高速渲染和刷新。

  为此,SpreadJS 纯前端表格控件引入了Canvas绘制模型和双缓存画布技术,具体实现方式如下。

      Canvas绘制模型

  由于传统的表格组件使用DOM的方式展示表格数据,无论在table,还是div中,复杂的UI都需要大量的DOM渲染。因此,在执行更新、滚动等操作时,需要不停的销毁、创建DOM,这无形中增加了大量无效计算。

  为了解决这个问题,前端框架React和Vue3均采用了虚拟DOM的方式,而SpreadJS则采用了一种更为先进的方式——HTML5 Canvas绘制。

  使用Canvas绘制,SpreadJS不仅无需重复创建和销毁DOM元素,在画布的绘制过程中,更是打破了DOM元素渲染对UI的诸多限制。SpreadJS可以绘制种类更为丰富的UI元素,如线形、特殊图形等,通过画法逻辑,还可以实现更加精准的UI界面渲染,解决了浏览器差异造成的样式误差。

  但如果只使用一个画布进行渲染,那么每次绘制时,不论是主体图层还是装饰图层,都需要通过画法逻辑将所有元素进行绘制,这显然是低效的。

  双缓存画布技术

  为此,SpreadJS又引入了双缓存画布的机制,将不易改变的主体图层绘制在缓存画布中,在发生渲染行为时,只需要将缓存画布中的主体图层直接通过图像克隆的方式绘制在主画布上,并附加绘制装饰图层元素,便可大大优化整个绘制性能。

  SpreadJS双缓存画布的技术特点:

  · 类似油画的分层绘制

  SpreadJS的绘制引擎基于油画的绘制原理,分为主体图层和装饰图层,主体图层渲染持久的、不易改变的元素,例如背景,单元格,表格线等。装饰图层则渲染常变性元素,如选择框、拖拽框、悬浮效果等。

  · 使用缓存画布

  当发生动态绘制,如表格滚动时,SpreadJS会将主画布清空,从缓存画布中根据行为上下文进行画布偏移,将偏移后的图层直接绘制在主画布上,再在主画布上绘制剩余部分,使整个表格的滚动过程更加流畅。

  基于行模式的稀松矩阵存储策略大幅节省内存消耗

  虽然没有明文规定,但在业界的共同认知里,浏览器会对单一线程进行内存限制,例如64位的chrome,每个tab页的内存消耗不允许超过4G,在手持设备上,这个限制则更为明显,例如iPhone 6s为1G,而iPhone 7为2G。

  这个限制,在单页面应用不成熟的十几年前,不会成为问题。因为,那时大家所关注的,还是如何提升后端的处理性能,前端只是一种静态的网页表达方式。

  随着前端工程化的高速发展,各种前端工程脚手架日渐成熟,WebComponent标准被提上日程,企业开始由C/S向B/S应用转型。这就要求前端开发者,需要面对单线程处理复杂业务数据的挑战。这里的复杂,不仅仅是数据量大,更是数据状态的处理。如何高效的解决数据的前后端交互,如何快速响应数据变更及数据回滚呢?

  为此,SpreadJS又提出了一个行之有效的解决方案——稀松矩阵

  对于表格,常规的存储方式是数组,如二维数组或对象数组。在类Excel的电子表格中,单元格内容是零散的,也就是说在Sheet中会出现大量空单元格,而这些空单元格,同样会占用内存空间。

  对于电子表格这种松散的文档结构,SpreadJS采用了稀疏矩阵存储模型(Sparse Array)来保存数据。

  相较于传统的链式存储或数组存储,稀疏矩阵存储构建了基于行索引的数据字典,在松散布局的表格数据中,稀疏矩阵只会对非空数据进行存储,而不需要对空数据开辟额外的内存空间。

  这种特殊的存储策略,不仅节省了内存消耗,也使得数据片段化变得更加容易。利用SpreadJS,可以随时框取整个数据层中的一片数据,进行序列化或反序列化。

  借助这个特性,开发者甚至可以随时替换或恢复整个存储结构中的任何一个级别的节点,实现高效的数据回滚和数据恢复。

  支撑复杂逻辑运算的计算引擎实现稳定可靠的应用系统

  公式,是类Excel电子表格中的重要功能,其广泛的应用于科学、财务、金融、制造等领域。SpreadJS支持450多种公式函数,同时还提供自定义公式和异步公式函数。

  表面看似简单的Excel公式,却具备高阶编程语言的一切特性,如语法分析、解析、运算、执行等。

  当用户设置一个公式到表格中,计算引擎会将其解析为一个中缀表达式,如公式“SUM(A1:B1, 3/E1, C1) + 2*(D1 - 1)”,当通过计算引擎的解析后,会在内存中以树型结构进行存储,这个树型结构被我们称为表达式树。表达式树的生成,是后续构建计算依赖链的关键。

  当一个公式被解析为表达式树后,计算引擎将根据运算上下文为其构建运算依赖链。运算依赖链的目的是为了按需计算,当表格内容发生变化时,只有被影响的表达式树会进行运算,而运算的依据就是依赖链。

  如上图所示,这是SpreadJS的计算引擎在构建计算依赖链时的一个简单的流程图,表达式树从计算存储模型中找到对应的根节点以及根节点标识,随后遍历整个表达式树,找出其他依赖标识,构建依赖关系。

  当整个依赖链中的任意节点发生变化时,沿着这条依赖链,SpreadJS会查找依赖节点并进行重算,这个过程中,没有在依赖链中的节点是不会发生重算计算的,也就是我们所说的脏值运算。

  利用这样的机制,SpreadJS大大提升了整个表格的运算速度,给用户更好的使用体验和更加精准的运算结果。

  除了绘制引擎、存储策略和计算引擎外,SpreadJS还实现了更多技术细节,例如触摸支持、富文本支持、前端Excel导入导出、JSON存储等,而这些技术点,承载了葡萄城数年来在表格控件的开发技术和长期服务于开发者的经验积累。

  SpreadJS广泛应用于各行业企业信息化系统开发

  目前,SpreadJS 已广泛应用于各行业的信息化系统开发中,满足表格文档协同编辑、 数据填报、 类 Excel 报表设计等业务场景,帮助华为、苏宁易购、天弘基金、远光软件等各领域龙头企业,搭建出功能和布局均高度类似于 Excel的软件系统,加速这类信息系统的交付。

  以华为勘验设计平台的系统搭建为例:

  基于 SpreadJS 开发的勘验设计平台,承载了华为全球业务(基站)的规划勘察设计任务,借助 SpreadJS 跨平台应用嵌入的特性,华为将原先使用 Excel 作为设计模板的方式升级为在线填报,解决了模板不统一、用料数据不一致、文件难以管理的问题,还保留了 Excel 的数据计算能力,让所有模板和数据均可在服务器中存储并管理。

硬核干货:葡萄城前端表格技术分享

(部分葡萄城合作客户)

  关于SpreadJS 的产品介绍及应用案例,欢迎访问葡萄城官网了解更多。

  SpreadJS 官网:https://www.grapecity.com.cn/developer/spreadjs

  

  

  总结

  葡萄城自 1980 年成立以来,一直专注于开发技术领域,透彻理解开发者所需,极致追求产品细节,经过数十年的打磨,推出了高度复刻 Excel 功能和使用体验的纯前端表格控件SpreadJS,可完美匹配在线办公场景和前端表格系统开发需求。

  未来,葡萄城将继续秉承“赋能开发者”使命,支持和赋能一切具有创新精神的开发者,激发开发者的潜能,支持客户的成功,共创全新的未来。


返回网站首页

国美节能补贴要求

第七届智能网联汽车技术年会

手机盲盒可靠吗

2020对你来说是怎么样的一年

UCloud优刻得上半年同比增长30.50%:营收持续增长
适合Match可以给内容打分,快来试试你的创作实力有多强?

荣耀运动耳机xsport怎么配对

骁龙888独占


返回网站首页

本文评论
疫情助推远程办公 视频会议软件公司Zoom股价大涨_美国视频会议软件ZOOM
  北京时间4日消息,由华人袁征创办的美国视频会议软件公司Zoom股价周一大涨,创近8个月以来最大单日涨幅。分析称,新型冠状病毒疫情和竞争问题似乎正驱使投资者转向这只股票...
日期:02-26
微软向Win10推送KB501831更新补丁(win10更新kb4601050)
  ITBEAR科技资讯4月26日消息,今天,微软正式向Win10推送KB5011831更新补丁,该补丁修复了一些现有的Bug,没有为系统增加新的功能。   更新后,一些用户在登录或注销系统时的...
日期:07-18
本山诉天涯谷歌索赔 网站不服一审上诉
  著名演员赵本山的“不差钱”等小品台词及其卡通形象,被天涯在线和谷歌等网络媒体擅自使用,赵本山因此起诉两公司索赔405万元。昨天记者获悉,此案一审判决两被告赔偿赵本山...
日期:07-26
快手国内业务单季盈利,程一笑:日活增长和成本“良性剪刀差”
  记者 范佳来  快手的“降本增效”取得一定进展。  8月23日,快手发布今年二季度财报显示,第二季度总营收217亿元,同比增长13.4%。净亏损(期内亏损)31.8亿元,经调后净亏损13...
日期:08-25
盲盒市场风险防范_盲盒行业迎来新规范堵住营销漏洞成关键
来源:上海证券报   ◎记者 罗茂林   盲盒行业迎来新的规范。日前,市场监管总局发布关于公开征求《盲盒经营活动规范指引(试行)(征求意见稿)》意见的通知。这会给行业带来什么...
日期:08-19
incaseformat的蠕虫病毒在国内爆发_警惕!incaseformat蠕虫病毒来袭,23日还将爆发!
  警惕!incaseformat蠕虫病毒来袭,23日还将爆发!     极光速达app 百度香港上市融资数据安全与数据泄露 斗鱼热议弹幕网易邮箱会员共享华为购买黑莓专利 2022中国云...
日期:07-10
腾讯最大股东一个月减持7980万股  投资20年赚超7000倍「腾讯持股最高的」
11月25日 消息:虽然腾讯股价已反弹近40%,但依然面临着被南非大股东减持的压力。11月24日,腾讯大股东Naspers集团荷兰子公司Prosus发布最新资产概况显示,相比10月28日和11月23日...
日期:11-26
苹果调整官网页面设计 商品结算页面图片变大
  7月31日消息,今天,苹果调整了官网的页面设计,主要对商品结算页面进行调整。  修改前,苹果官网的结账页面设计为左右分栏,左侧为手机外观,右侧为配置信息。修改后,苹果在保持...
日期:08-01
小米推出米家手自一体电动螺丝刀:1500mAh电池,众筹价129元(米家手自一体螺丝刀怎么样)
  2月3日消息 今日,小米推出了开年众筹新品“米家手自一体电动螺丝刀”,支持电动快速拆装与手动细心调节,将于2月5日上午10:00开启众筹,零售价149元,众筹价129元。   米家...
日期:09-27
chrome49版本_谷歌 Chrome 94 浏览器发布:更新 V8 引擎,支持新图形 API
  9 月 22 日消息 谷歌 Chrome 浏览器已改为四周一大更,今日,Chrome 94 已正式发布,大家可以在设置中查找更新下载。   新标签页可显示 Google Drive 文件   Chrome 在...
日期:07-17
奢侈品电商第一股寺库人去楼空「寺库奢侈品电商平台」
  来源:北京商报  寺库的危机正在不断浮出水面。8月16日,北京商报记者探访发现,曾经摆满了奢侈品的寺库大厦如今已空空如也,仅剩5层还有部分工作人员,大厦内还专门设立了消费...
日期:10-01
淘特官方旗舰店「淘特上线两款智能新品“微店铺”和“心动搜索”_」
11月16日消息,淘特宣布上线两款智能产品:淘特“微店铺”和“心动搜索”。据介绍,淘特“微店铺”和“心动搜索”基于淘特搜索逻辑研发出的体验新功能,通过商业创新和交互创新,提升...
日期:11-25
微软发布Surface Studio 2 Plus 配备11代英特尔CPU和RTX 3060
等待Surface Studio一体机更新的Surface粉丝终于可以欢呼了。微软已经宣布了Surface Studio 2+, 名字里多了个加号的Surface Studio 2的更新版本,拥有更强大的硬件和各种小变...
日期:10-13
三星浏览器apk「安卓版三星 Internet 浏览器 Beta更新」
IT之家 12 月 27 日消息,三星近日升级了安卓端三星 Internet 浏览器 Beta 版更新,本次更新引入了两个非常有用的功能,让该应用浏览网页比以前更容易、更安全。第一个功能就是允...
日期:12-27
飞猪旗舰店双11期间上线多款酒店新品「飞猪旗下酒店品牌」
10 月 28 日消息,双 11 期间,万豪、雅高、万达、洲际、凯悦等酒店集团相继在其飞猪官方旗舰店首发新品。同时,今年万达酒店及度假村有超过 20 款商品在飞猪双 11 售卖,其中北京...
日期:10-28
个人信息安全权_个人信息安全|谁来为我们的隐私负责?
  近日因为一个视频,微信被推上“监测用户聊天记录”的风口浪尖。   随后微信官方推文澄清此谣言。该谣言起于某短视频声称微信正在监听用户的聊天记录,并传授“关闭微信...
日期:07-14
B站国创作品收入预计超20亿 《三体》动画定档12月3日
凤凰网科技讯 10月29日消息,哔哩哔哩(以下简称“B站”)宣布《三体》动画定档12月3日,并将开启《三体》动画全球共创计划。同时,B站推出了49部国创作品新内容,包括《镇魂街 第三季...
日期:10-30
光通信与5G不断结合 打造端到端网络
目前5G已成业界热议话题,而光通信虽然看起来没有像5G那样风头正盛,但是光通信技术作为5G的重要支......
日期:09-27
200亿美元!Adobe砸钱吞并最大竞争对手Figma,盘中股价大跌逾17%_Adobe 公司股票
当地时间周四(9月15日)Adobe宣布,它将以约200亿美元的现金和股票收购设计软件公司Figma。收购交易完成后,Figma将继续独立运营,Figma的定价暂时不会改变。Adobe称,它将和Figma共同...
日期:09-20
年轻人的第一台电影机 索尼发布4K Super 35mm电影摄影机FX30:仅1.6万「sony3500 4k摄像机」
9月28日,索尼正式发布了电影摄影机系统新品FX30(型号名:ILME-FX30)。FX30是一款紧凑型4K Super 35mm格式电影摄影机,支持双基础ISO、Log拍摄模式和导入自定义LUT等专业功能,非常适...
日期:09-29