新项目要求重新选择一个移动端框架,查了些资料做分析。
开发模式
当前app主流开发模式有
-
Native App(原生)
-
Web App (网页)
-
Hybrid App(混合)
这个图说的还是很清楚的
总结一下:
混合开发灵活性好,兼容性强,功能更完备,所以当前项目考虑使用 混合开发模式。
Hybrid App混合开发
关于混合开发,下面几篇文章说的还是比较清楚的。
混合应用开发定义和常见问题:
https://blog.csdn.net/bihansheng2010/article/details/100886979
APP混合模式开发方案:
https://www.jianshu.com/p/aeac270cb7d1
目前主流的几种开发App方式介绍 :
https://www.jianshu.com/p/a7a77eb16a2a
当前主流框架:(分析来源:APP混合模式开发方案(2018年))
-
PhoneGap(cordova) (当前比较主流的H5框架)
-
AppCan(简单,付费,相对较少)
-
APICloud (官方号称7天做出一个App,能实现功能,但是实际上组件比较少)
-
React Native(之前非常火,但是学习成本高,ios和android代码并非通用)
-
AppMobi(听说很厉害,但是国外项目,文档少)
-
Flutter (跨平台ui框架,新语言dart,不支持热更新)
对比分析
经过讨论,我们选择其中的 Cordova、React Native、Flutter 作为备选
对比分析:https://www.jianshu.com/p/900bf9cbd005
Flutter和RN对比:https://www.jianshu.com/p/51c4f7f6e446
总结
框架名称 | 核心逻辑 | 优势 | 劣势 |
Cordova | Cordova通过对HTML、CSS、JS封装为原生APP | 1、iOS和Android基本上可以共用代码,一次编码,到处运行 | 1、占用内存高一些,性能体验上,和原生存在差距 |
React Native | JavaScript运行业务代码,JS Bridge调用平台组件,原生控件进行渲染 | 1、虽然不能做到一次编码到处运行,但是基本上即使是两套代码, 也是相同的jsx语法, 使用js进行开发。 | 1、对开发人员要求较高,当官方封装的 控件、API无法满足需求时就必然需要懂一些native的东西去扩展,扩展性仍然远远不如web,也远远不如直接写Native Code。 |
Flutter
| 自己实现了一套UI框架, 直接在系统底层渲染系统上层UI | 1、高生产效率。一套代码可以开发出Android和iOS应用; | Flutter采用Dart语言开发,属于小众语言,需要一切都要重新 学习。 |
选择谁?
选框架需要先明确需求。比如:
1、支持业务好,可靠稳定
2、灵活,可扩展,快速响应,方便更新
3、用户体验好。
侧重点不同,对框架的取舍也应该不同。
老板说:我都要!
哭
我们项目最终选择了Cordova。
原因:
1、cordova 支持热更新,更灵活,便于及时响应需求,快速修复bug。(这是主要原因)
2、项目成员都有H5开发经验,并且有人用过Cordova的,没有但是没有人用过React Native 和 Flutter。(cordova 上手快,学习成本低)
3、该项目是内部项目,对体验要求相对低。(当前手机性能和网络性能都比较好了,性能差距也没那么明显)
ps:
网上有这样一种说法:
公司主营项目最好用native实现核心功能,配合H5做扩展。保证稳定和用户体验。
内部项目用新技术,之前的RN,现在Flutter。快速响应需求,积累新技术。
我觉得还是一定有道理的。虽然最终没有选这flutter,但是查资料过程中发现flutter的优势还是比较多的。如果能实现在线热更新,就完美了(不做热更新是为了防止苹果封杀?)