Cube 技术解读|Cube 小程序技术详解( 二 )
新老 Cube 版本,选择器支持上的差异如下:
注:
[1] 老版本 Cube 是指:钱包 10.2.0 以前版本;新样式能力基本上对标 Web 引擎的样式能力;新样式能力支持像这种复杂选择器 。
div > div.jartto p span.yellow a#t1 {}.pixel-ratio-2 .web1px::before {}div:nth-child(2n+1) {}input[type="button"] {}#blue,div > div.jartto p span.yellow a#t1 {}
支持自动分词,断行(Inline Text)
最初 Cube 用的是 Android 和 iOS 提供的文本计算和绘制能力 。这种技术方案(以下称为平台层 Text)存在3个问题:
性能问题:特别是 Android 下,利用 Android 平台层的接口实现文本布局计算,导致在文本较多的情况下,布局耗时在渲染整体耗时里占比较高;富文本特性:富文本以及许多文本特性支持较麻烦;各平台上实现文本效果存在细节差异或者兼容性问题 。
针对上述问题,在 Flow Layout 基础上增强支持 Inline Text 布局计算文本 。基于 Inline Text 可以较轻松实现以下富文本,图文混排,分词,自动换行等 。
1.富文本
2.自动换行和分词
Inline Text 实现前后的文本样式对比如下:
注:
假设原有 Cube 采用平台层接口实现的文本特性称为:平台层 Text;√表示实现细节上不完善或者不完全支持;在 Inline Text 基础上可以实现功能丰富的富文本组件;值得一提的是:该实现非常精巧,对于 Cube 包体积只增加了 170KB 。具体细节后续文章详细探讨 。
文本布局计算耗时对比(文本节点较多场景):
采用 QuickJS 替代 V8
V8 虽然是性能最高的 JS 引擎,但是存在内存占用大,初始化较慢等不足 。在 IoT 或者低端设备上这些不足会被放大 。因此在这些设备上,Cube 采用 QuickJS 取代 V8 。一方面降低内存占用,另外一方面提升初始化性能 。
Cube 内部目前适配了多个 JS 引擎,具体如下:
在 Android 移动端上使用 V8 和 JSIiOS 上使用 JSCIoT 等低端设备上使用 QuickJS
另外我们在开源 QuickJS 基础上做了些优化工作 。优化的结果大致如下(后续文章将详细介绍):
支持动画和多媒体组件
除了上述基础组件和能力之外,动画和多媒体也是部分小程序不可缺少的 。因此我们扩展支持了 Video,Canvas、Lottie,Live Player 等组件支持 。并应用于 TV 大屏小程序、小游戏以及直播场景上 。
在低端设备上,如何提高动画帧率并且降低内存占用也做了深度的优化 。以下是 Video 和 Canvas 组件在小程序中的效果图:
支持多种模式的小程序产物
目前 Cube 支持多种模式的小程序产物:Native,Cube,Shared 。
Native 模式:对应的是旧的 Cube 渲染小程序模式,不支持 CSS 样式表,只能支持内联样式和有限的几种 CSS 选择器 。性能最高,兼容性较低;Cube 模式:在 Native 模式进化而来,支持 CSS 样式表和多种 CSS 选择器 。性能良好,支持常用的 CSS 样式和特性(包括样式继承,多种 CSS 选择器);Shared 模式:为了降低 Web 渲染的小程序迁移或者过渡到 Cube 渲染而开发 。在同一个小程序产物里既支持 Web 渲染一部分页面又支持 Cube 渲染一部分页面 。而且 Cube 渲染的页面支持样式表 。这样在性能和兼容性平衡 。小程序产物相对于 Web 渲染的小程序,产物体积增加不会超过 10% 。
注:如果需要 Web 产物兜底,则 Native 模式 和 Cube 模式的小程序产物,比 Shared 模式大 。
研发进展
Cube 小程序在 TV 和 POS 机上和相关团队,一起打磨小程序技术栈(包括渲染引擎,JS 引擎,AppX,Ariver 容器)等 。
在 TV 上面临的问题:
内存少:有的设备只有 512MB 内存,长列表滚动容易卡;需要支持焦点切换;CPU 主频较低:有的只有 1GHz 。
短中期目标是用小程序技术栈替代 WeeX 单页 。当前进展如下:
小程序启动性能上超过 WeeX 单页(低端设备上优势更明显);内存占用上,小程序初始化后内存占用小于 10MB,典型小程序整体内存占用在 32MB 左右 。
具体细节后续文章详细总结 。
在 POS 机上面临的问题:
推荐阅读
- 进军高端矿泉水,“乳酸菌第一股”涨停,技术门槛低经营风险高
- 解读忆秦娥娄山关 忆秦娥娄山关赏析
- 却话巴山夜雨时 却话巴山夜雨
- 吉安职业技术学院|预计郑州全年可完成城镇新增就业13.1万人
- 四川凉菜技术培训在哪里学? 凉拌菜哪里学
- A股:迎来重要利好消息!7月1日A股大消息及解读
- 大数据核心技术都有哪些? 大数据技术有哪些
- 透水混凝土施工(透水混凝土路面施工技术要点)
- 鳄龟的饲养 鳄鱼龟养殖技术
- 西瓜的种植方法 大田西瓜种植技术