当前位置: 首页 > Web前端 > JavaScript

2021年度总结-葡萄城软件开发技术回顾(上)

时间:2023-03-27 10:19:53 JavaScript

2021年度总结|今年云原生领域蓬勃发展,容器应用广泛,k8s堪称热门话题;今年以来,大数据技术体系1.0基本成型,数据平台的商业价值逐步进入技术复兴和狂潮阶段。今年,Vue、React、Angular三驾马车依旧领跑大前端,整体技术逐渐趋于稳定,未来可期;今年,元界蓬勃发展,.net6的推出也被大家津津乐道。对于葡萄城来说,今年也是不断探索的一年,“赋能开发商”的发展从未停止。2021年,我们依然秉承“赋能开发者”的使命,用匠心和耐心开发技术,用真诚和执着分享。接下来,就让葡萄带你去看看——葡萄城的2021。请注意检查您的“前端表单”。你可能没有听说过SpreadJS,但你一定听说过在线协同办公。作为纯前端类Excel表格控件,在线协作一直是我们的强项。在过去一年的分享中,我们跟大家分享了很多葡萄城在纯前端电子表格方面的技术内幕,包括双缓冲canvas和油画分层canvas绘图,公式引擎的底层逻辑系列,以及使用稀疏矩阵的时空置换改善性能问题,以及金融专业数据IRR/NPV的计算和处理,有兴趣的可以自行查看。现在我们有一些新人要介绍给你。为了让前端表格既有类似Excel的公式计算能力,又具备传统表格控件的高性能,我们希望将传统的高性能结构化表格(Grid)与公式计算引擎(CalcEngine)结合起来结合在一起。为了实现这样的设计,我们首次提出了数据管理容器(DataManager)的概念,在前端实现了原本只能在后端使用的关系型数据引擎,从而实现了数据管理在大量数据(百万行)的情况。、秒级加载、排序、过滤,所有这些操作都完全通过JavaScript代码在前端浏览器中实现。数据管理容器(DataManager)不仅承担数据存储和索引的功能,还实现了多数据表关系、视图、CRUD等功能。TableSheet负责将数据管理容器(DataManager)中组织的数据、视图、关系通过SpreadJS自身的“Canvas”呈现在网页上。通过以上功能的组合,可以为用户面对大数据量的分析、合并、处理场景提供更健壮的支持,减少传统表系统对后台的过度依赖,完成更多的数据操作在前端,从而释放宝贵的后端和带宽资源。其他亮点在前端计算引擎的性能和兼容性上,我们也做了一些优化:兼容性方面:支持微软最新的XLOOKUP/XMATCH系列函数,并增加了对刚刚发布的LAMBDA函数的兼容性新版本。功能方面:内置支持450多个Excel标准函数,支持自定义函数和异步函数。在性能方面,可以秒级完成上万个公式的分析计算。同时,随着热门前端框架的不断更新,现在也实现了对Vue3、Angular13的支持。除了前端性能的优化,后端GcExcel现在可以支持.NET6平台;为了打印更方便,集成了打印驱动,直接连接物理打印机,直接输出打印内容。学道必猛,不忘初心。我们从未停止对表领域技术的探索,这就是匠心与创新。让复杂报表不再复杂报表复杂报表的复杂性,做过报表的同学都知道。2021年,我们也不会停止对报道领域的深化。.Net平台首先要提到的就是BlazorViewer。Blazor是一个基于.NET平台和ASP.NETCore技术构建交互式客户端WebUI的框架。开发人员可以使用C#而不是JavaScript构建交互式WebUI。这使得开发人员可以轻松地使用C#编写客户端和服务器代码。为了让报表查看更加方便,现在新增了一个报表查看器组件——BlazorViewer。它为应用程序提供了报表渲染、显示、交互、打印和导出的完整功能,使我们可以更高效地构建Web应用程序。主要功能包括:使用.NET代码在服务器端渲染用户界面,使用.NET代码在服务器端处理用户交互,为开发者提供打开报表、处理事件和自定义报表显示界面的C#API.6的升级和VS2022的推出也是兼容升级的。在之前的JavaScript平台版本中,ARJS采用的npm包使用了CommonJS、AMD等模块规范。但是,在使用这些规范的过程中,会出现一些问题。例如,CommonsJS更适合服务端。服务器上读取的模块都在本地磁盘,加载速度非常快;但如果是在客户端,加载模块时可能会出现“假死”的情况。为了解决这个问题,我们使用ES6本身支持的模块化语法,对报表控件的npm包进行完整的封装。npm包暴露了原生的ES模块,可以为我们的应用程序的开发和构建提供优秀的性能。现在只要浏览器支持ES6的模块化,项目工程就不用再花时间和精力编译打包了。project工程体积更小,编译性能会更快。同时框架支持更加丰富,Vite.js、Vue3、Angular13等前端框架现已全面支持。除了以上两点,为了保证报表性能适应更大数据报表的生成,我们一直致力于优化报表引擎,提升报表性能。基于平台和开发语言的限制,我们对每个报表生成的关键节点进行了精细优化。首次使用可变数据结构进行存储,使得整个报表的性能有了显着的提升。为了性能提升,JavaScript中很难优化“1+1”操作,但是可以优化内存分配,将比较操作的次数减少到2次,所以我们使用如下变量存储方式:{Type:'float'|'字符串'|'布尔值'|'int16'|'int32'…Value:object}变量用于显示结果和进行数据引擎交互计算,所以在执行“1+1”等表达式时只需要进行三次内存分配和四次转换,而无需计算条件运算符的数量,例如switch和if,从而减少时间和内存消耗。在实际测试中,我们也发现这种方式可以有效提升报表性能,真正实现增量式大数据量缓存加载机制。同时,为了进一步突破报表功能的局限性,报表控件实现了静默打印。有兴趣的同学可以看看之前的文章:https://www.cnblogs.com/power...复杂的投标报表很复杂,但是我们还在努力让复杂的投标报表变得不那么复杂,成为大家的好用的开发工具触手可及。总结技术的发展和融合比我们想象的要快。在元界、AI、前端、云、数据、运维等众多关键词的威逼下,计算机网络技术不断发展壮大。而我们也从未停止前行的脚步,从前端电子表格技术、BI数据分析,到复杂报表的处理和解决,以及风头正劲的低代码,立足当下,放眼未来。这一次,我们从葡萄城历史最悠久的控件开始,介绍一下今年的技术亮点和突破。下篇,我们将继续带大家回顾一年来葡萄城在新兴领域取得的成绩。可用的技术升级。