跨平台技术
- H5+原生(Cordova、Ionic、微信小程序)
大多数功能都是H5实现的话,我们称其为Web APP - JavaScript开发+原生渲染 (React Native、Weex、快应用)
JavaScript调用原生API,预先实现一系列API供JavaScript调用。
DOM树与响应式编程。
1.布局消息传递; 将虚拟DOM布局信息传递给原生;
2.原生根据布局信息通过对应的原生控件渲染控件树;
优点:
1.采用Web开发技术栈,社区庞大、上手快、开发成本相1对较低。
2.原生渲染,性能相比H5提高很多。
3.动态化较好,支持热更新。
不足:
1.渲染时需要JavaScript和原生之间通信,在有些场景如拖动可能会因为通信频繁导致卡顿
2.JavaScript为脚本语言,执行时需要JIT(Just In Time),执行效率和AOT(Ahead Of Time)代码仍有差距。
3.渲染依赖原生控件 - 自绘UI+原生(QT for mobile、Flutter)
思路:通过在不同平台实现一个统一接口的渲染引擎来绘制UI,而不依赖系统原生控件,所以可以做到不同平台UI的一致性。注意,自绘引擎解决的是UI的跨平台问题,如果涉及其它系统能力调用,依然要涉及原生开发。
优点:
1.性能和原生控件接近。
2.灵活、组件库易维护、UI外观保真度和一致性高
不足:
1.动态性不足;为了保证UI绘制性能,自绘UI系统一般都会采用AOT模式编译其发布包,所以应用发布后,不能像Hybrid和RN那些使用JavaScript(JIT)作为开发语言的框架那样动态下发代码。

Flutter
Flutter使用Skia作为其2D渲染引擎,Skia是Google的一个2D图形处理函数库,包含字型、坐标转换,以及点阵图都有高效能且简洁的表现,Skia是跨平台的,并提供了非常友好的API,目前Google Chrome浏览器和Android均采用Skia作为其绘图引擎。
- Dart在 JIT(即时编译)模式下,速度与 JavaScript基本持平。但是 Dart支持 AOT
AOT (Ahead of time)即 “提前编译”
JIT(Just-in-time)即“即时编译”
Dart和JavaScript做一个对比:
1.开发效率高(JIT+AOT)
2.高性能(AOT)
3.快速内存分配
4.类型安全(支持静态类型检测)
5.Dart开发团队的很多成员都是来自Chrome团队

网友评论