此次版本更新将带来众多的增强功能,而其中新的文件结构尤为重要,是近几个版本中最重要的架构级更新!
其设计目标是
*减少 SSJSON 的体积,平均减小到原来 30%
*提供按需加载(Lazyload)能力,相对之前的增量加载(IncrementalLoading),按需加载(Lazyload)向最终用户提供了更友好的UI的体验
*使用多项专利技术,通过优化内部存储,提升导入导出的性能,平均提高 50%
*为后续的协同编辑打下基础架构支持
新功能背景:
在SpreadJS V16之前,关于文件toJSON()之后,生成的json文件太大,一直被很多客户诟病。例如,同样一个文件,导出Excel文件只有几KB,而导出的JSON文件会有几MB。这直接导致的问题有:
(1)导出文件太大,前后端传输消耗带宽,占用存储空间;
(2)toJSON()时间过长,导致浏览器无法去做其它事情,只能一直等待,影响客户体验及性能。
为解决上述问题,SpreadJS V16设计了一种新的JSON文件格式(SJS),减小JSON文件体积,提升客户的使用体验。与原始excelIO导入/导出文件不同,spreadJS V16提供了一个名为“IO”的插件。它不仅支持excelIO已经支持的所有模块,还可以很好地支持大文件的导入/导出,同时提供了一种为大文件部分加载工作表的方法。
可以看出,V16在SpreadJS与Excel文件格式转换之间仅需要一步,在这个步骤中产生的文件格式就是V16新的文件格式SJS,而V16之前在SpreadJS与Excel文件格式转化时则需要两步。新的SJS文件格式是一个压缩文件。其中包含一些小的sjsjson文件,与Excel的xml结构类似。
对于老版本15以前的ssjson文件,SpreadJS会继续支持,因此也不需要担心产品升级后造成老版本的文件不可用
导入很慢的大文件,经过测试,老版本的文件格式导入需要43s,而新版本的文件格式导入仅需2s,今后客户再也不会吐槽文件导入慢了。在导出时,除了可以选择导出Excel文件、SSJSON文件,V16新增的就是上图中演示的SJS文件,在导入操作中,也同时支持了SJS格式的文件导入。但是需要注意的时,V16导出SJS时,对集算表及密码部分并没有提供支持