- H5+原生混合开发模式,WebView渲染(Cordova、Ionic、微信小程序、uniapp)
这类app称为混合应用或Hybrid App。(如果一个应用的大多数功能都是H5实现的话叫Web App)H5运行在WebView中,WebView成未Javascript与原生API之间通信的桥梁JsBridge,这是混合开发的核心。优点是H5,web技术栈,资源丰富。缺点是性能不好,对于复杂界面或动画WebView不堪重任。
- JavaScript开发+原生渲染 (React Native、Weex、快应用)
React是响应式Web框架,根据状态变化通过DOM操作只更新变化部分,避免整棵DOM树整体渲染,提高性能。引入虚拟DOM树避免浏览器频繁重绘,React中虚拟DOM最终会映射为浏览器DOM树,而RN中虚拟DOM会通过JavaScriptCore映射为原生控件树。
Weex类似于RN,阿里巴巴的跨平台移动开发框架。
快应用原理与RN等类似,只不过它的渲染和排版引擎不是在每次打包的app中,而是集成到ROM中,所以安装包的体积比较小。
这个类别的优点是web技术栈,开发成本低,原生渲染,性能比H5提高很多,动态化好,支持热更新。
缺点是js通信频繁会导致卡顿,不同平台控件需要单独维护,系统更新时社区控件会滞后。
- 自绘UI+原生(QT for mobile、Flutter)
性能高,灵活,组件易维护,UI一致性高。缺点是动态性不足,C++开发成本高。
Qt缺点是生态不足,资源少,推广不利,Qt开发效率不如Web开发栈。Flutter的缺点是学习成本。相比于Qt的优点是生态和社区活跃,官方推广力度大。
![9d35859ae00ce554608b026f708959fa.png](https://i-blog.csdnimg.cn/blog_migrate/96e1087fed6f438d40e228f81aaf91df.jpeg)