跨平台技术历程
1. h5+原生(微信小程序)
- web技术栈,页面运行在webView,实质上就是运行在浏览器内核,与网页同理
- 优势:可动态化发布,灵活易上手
- 缺点:
- 1、webView容器权限制约,是无法调用系统功能的,因此衍生jsBridge,用于原生与webView通信,从而调用系统相关功能.
- 2.较为复杂的动画以及布局等性能难以支持,会出现卡顿。
2.js技术+原生渲染(React Native、Weex)
- 由Facebook的React衍生,React是DOM(Document Object Model)映射浏览器DOM树,而RN是DOM映射原生控件,通过一个解释器jsCore,(提供运行环境)将DOM布局信息传输并生成对应控件,桥梁相当于jsBridge
- 优势:由于是原生控件,性能比webView好,能动态化、web技术栈易上手,生态好
- 缺点:
- 不同原生系统不同控件,都需要单独维护,不同系统更新要同步跟随更改,难于维护
- JIT比AOT,无法预处理,执行效率差一些
3.自制UI引擎+原生(Qt、Flutter)
- 通过不同平台实现统一接口的渲染引擎来绘制UI,不依赖原生控件,保持UI一致性,调用的是系统API绘制性能高。
- 缺点:动态性不足,发布使用的是AOT,难以做到动态化,但支持热重载,dart语言支持JIT模式