移动端框架选型

新项目要求重新选择一个移动端框架,查了些资料做分析。

开发模式

当前app主流开发模式有

  1. Native  App(原生)

  2. Web App  (网页)

  3. 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年))

  1.  PhoneGap(cordova) (当前比较主流的H5框架)

  2. AppCan(简单,付费,相对较少)

  3. APICloud (官方号称7天做出一个App,能实现功能,但是实际上组件比较少)

  4. React Native(之前非常火,但是学习成本高,ios和android代码并非通用)

  5. AppMobi(听说很厉害,但是国外项目,文档少)

  6. 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
(h5技术)

1、iOS和Android基本上可以共用代码,一次编码,到处运行
2、纯web思维,开发速度快, 简单方便,所有UI组件都是有html模拟,可以统一 使用。
3、可实现在线更新,允许动态加载web js
4、文档多,开发者多,遇到问题容易解决,技术成熟

 

1、占用内存高一些,性能体验上,和原生存在差距
2、web技术无法解决一切问题,对于比较耗能的地方无法利用native的思维实现优势互补,如高体验的交互,动画等。
3、html解析依赖浏览器,存在兼容性问题

React Native

JavaScript运行业务代码,JS Bridge调用平台组件,原生控件进行渲染
 

1、虽然不能做到一次编码到处运行,但是基本上即使是两套代码, 也是相同的jsx语法, 使用js进行开发。
2、更贴近于原生开发,用户体验高于html, 开发效率较高
3、Flexbox布局据说比native的自适应布局更加简单高效
4、可实现在线更新(???)

1、对开发人员要求较高,当官方封装的 控件、API无法满足需求时就必然需要懂一些native的东西去扩展,扩展性仍然远远不如web,也远远不如直接写Native Code。
2、多平台需要些多套代码。

Flutter

自己实现了一套UI框架, 直接在系统底层渲染系统上层UI

1、高生产效率。一套代码可以开发出Android和iOS应用;
2、Dart语言使得同样的功能只需要很少的代码;
3、迭代更加方便, hot reload功能;
4、创建优雅的、高度可定制的用户界面。Flutter内置了对Material Design和Cupertino(iOS-favor)的UI组件库;提供了可定制 的UI组件,不再受制于OEM控件的限制;
5、借助可移植的GPU加速的渲染引擎以及高性能本地ARM代码运行 时以达到跨平台的高质量用户体验。
 

Flutter采用Dart语言开发,属于小众语言,需要一切都要重新 学习。

Flutter现在还处在Beta阶段,第三方库很少。

 

选择谁?

选框架需要先明确需求。比如:

1、支持业务好,可靠稳定

2、灵活,可扩展,快速响应,方便更新

3、用户体验好。

侧重点不同,对框架的取舍也应该不同。

老板说:我都要!

我们项目最终选择了Cordova。

原因:

1、cordova 支持热更新,更灵活,便于及时响应需求,快速修复bug。(这是主要原因)

2、项目成员都有H5开发经验,并且有人用过Cordova的,没有但是没有人用过React Native 和 Flutter。(cordova 上手快,学习成本低)

3、该项目是内部项目,对体验要求相对低。(当前手机性能和网络性能都比较好了,性能差距也没那么明显)

 

ps:

网上有这样一种说法:

公司主营项目最好用native实现核心功能,配合H5做扩展。保证稳定和用户体验。

内部项目用新技术,之前的RN,现在Flutter。快速响应需求,积累新技术。

我觉得还是一定有道理的。虽然最终没有选这flutter,但是查资料过程中发现flutter的优势还是比较多的。如果能实现在线热更新,就完美了(不做热更新是为了防止苹果封杀?)

猜你喜欢

转载自blog.csdn.net/bihansheng2010/article/details/106373400