本文是“立方技术解释”系列中的第三篇文章。欢迎每个人查看以前推出的“和”。
的Cube卡(Cube)已在“支架”应用中广泛使用。同时,它现在支持现场商业产出。欢迎开发人员登录到控制台以体验和使用它。
Cube Mini程序除了的Cube卡外,是立方技术的另一种形式。它将主要用于智能电视,POS机器和其他物联网字段。它目前正在开发和抛光中。欢迎开发人员沟通和讨论。
作为动态或跨端开发的技术堆栈,迷你计划已成为该行业的事实上的标准。作为一种轻巧的迷你程序技术堆栈,Cube具有小型,快速启动和低内存足迹的特征,并且更适合“使用和使用”迷你程序方案。
以下将重点关注Cube 技术堆栈和技术进化实践(如果没有特殊说明,所有数据和图表均适用于小程序)。
立方体渲染小程序
模块组成
从小程序的角度来看,立方体渲染引擎主要由以下模块组成:
线程模型
立方体小程序技术堆栈内有几个线程:UI,等。
概括:
值得注意的是,Web渲染引擎的功能是与节点相关的DOM操作必须与JS相同。这导致一个线程中的HTML,布局,样式计算,DOM和JS(包括垃圾收集)。结果是,只有在解析文档后,您才能看到UI效果,这也是Web渲染迷你程序有很长时间使用白色屏幕的原因。
Cube 堆栈将“ DOM操作”和JS执行。因此,JS的GC不会影响UI渲染。此实现对于加速的创业非常有帮助。由于布局计算和JS执行也被解耦,因此由于JS执行,通常不会阻止UI交互。
Cube Mini计划技术堆栈的功能
与网络引擎的比较
以下是迷你程序方案与网络引擎之间的比较:
技术演变
为了使Mini计划业务以低成本的成本来渲染Mini计划,需要完成三个方面:
新的流程布局
最初,立方体仅用于支持Flex布局瑜伽以进行布局计算。稍后,它将升级到支持多种布局方法(例如Flex and)的流量。这解决了开发人员只能使用Flex布局的问题。目前,两个布局引擎,即Cube都得到了内部支持。其中,流程主要用于迷你程序,瑜伽用于卡片。两者的能力差异如下:
支持CSS样式表
Cube的旧版本仅支持内联样式和简单的CSS选择器。但是,小程序不限制CSS,因此Cube 支持CSS样式表,样式继承,多个选择器等。这允许Web渲染可以切换到Cube渲染,从而大大降低了适应成本。甚至可以根据小程序IDE中的Web渲染来开发一些小程序,然后将其包装到Cube渲染产品中,以便在真实机器上预览。前端学生无需进行太多的修改和改编。
选择器对新近立方体版本的选择器支持的差异如下:
笔记:
支持自动单词细分和折断(文本)
最初,Cube使用iOS提供的文本计算和绘图功能。此技术解决方案有3个问题(以下是称为平台层文本):
性能问题:尤其是,使用平台级界面来实现文本布局计算,从而在整体渲染耗时的情况下,在有很多文本的情况下,布局时间耗时很高;
丰富的文本功能:丰富的文本和许多文本功能支持更麻烦;
在实现每个平台的文本效果时,详细或兼容性问题存在差异。
为了应对上述问题,我们增强了对文本布局计算文本的支持。根据文本,可以轻松实现以下丰富的文本,图形和文本混合,单词分割,自动线包装等。
1。文字
2。自动线路断裂和单词分段
文本实现之前和之后的文本样式比较如下:
笔记:
比较耗时的文本布局计算(带有更多文本节点的方案):
使用替代V8
尽管V8是性能最高的JS引擎,但它的内存使用情况不足和初始化缓慢。这些缺点将在物联网或低端设备上放大。因此,在这些设备上,立方体使用V8的替换。一方面,它减少了内存使用量,另一方面,它可以提高初始化性能。
Cube目前具有多个JS发动机,如下所示:
此外,我们还基于开源进行了一些优化工作。优化结果大致如下(随后的文章将详细介绍):
支持动画和多媒体组件
除了上述基本组件和功能外,动画和多媒体对于某些迷你程序也必不可少。因此,我们对诸如Live之类的组件进行了扩展的支持。并应用于电视大屏幕迷你节目,迷你游戏和实时广播场景。
在低端设备上,已经对如何提高动画帧速率并减少内存使用量进行了深入的优化。以下是中组件的效果图:
成分
成分
支持多种模式的迷你程序产品
目前,Cube支持多种小程序产品模式:立方体。
注意:如果您需要保证Web产品,则模式和立方体模式的迷你程序产品大于模式。
研发进度
Cube 在电视和POS机器和相关团队上一起工作,以抛光 (包括渲染引擎,JS引擎,Appx,容器)等。
电视上面临的问题:
短期和中期目标是用微型程序堆栈替换WEEX单页。当前的进度如下:
详细的摘要,内容是后续文章的具体细节。
POS机器面临的问题:
在POS计算机上运行订购小程序时,主要问题会面临:
短期和中期目标是用小型程序技术堆栈替换开发的应用程序。当前的进度如下:
这种情况主要是带有大量文本节点的长列表。已经采用了许多优化方法,随后的文章详细介绍并介绍了。
总结
为了适应Mini计划,Cube渲染引擎在布局计算,样式功能,组件支持和开发工具方面取得了长足的进步,并通过朋友的共同努力取得了进步。同时,在低端设备(例如IoT设备)或对性能敏感的方案中,Cube 在减少内存使用方面也取得了良好的结果。
将来,面对各种IoT设备,有必要加速技术的发展以支持更多场景。欢迎大家交流和讨论。
本文从官方帐户“阿里巴巴移动技术”中复制