Flutter(Google)
Flutter是google最新的移动UI框架,Beta1版本于2018年2月27日在2018世界移动大会发布,Beta2版本2018年3月6日发布,现在更新到了1.7版本。开发者可以使用Flutter在ios和Android平台上开发原生应用,闲鱼、NOW直播、京东、美团这些应用也有使用Flutter。
优点:
高生产效率。一套代码可以开发出Android和iOS应用;
Dart语言优越性,使得同样的 功能只需要很少的代码;
迭代更加方便,hot reload(热重载)功能;
创建优雅的、高度可定制的用户界面;
Flutter内置了对Material Design和Cupertino(iOS-favor)的UI组件库;
提供了可定制 的UI组件,不再受制于OEM控件的限制;
借助可移植的GPU加速的渲染引擎以及高性能本地ARM代码运行时以达到跨平台的高质量用户体验;
缺点:
Flutter在github上面未解决的issuse可不少;
Flutter采用Dart语言开发,属于小众语言,需要一切都要重新学习;
Flutter现在还处在Beta阶段,第三方库很少;
React Native(Facebook)
RN是Facebook于2015年4月开源的跨平台移动应用开发框架,目前支持ios和Android两大平台。RN使用Javascript语言,类似于HTML的JSX,以及CSS来开发移动应用,因此熟悉Web前端开发的技术人员只需很少的学习就可以进入移动应用开发领域。国内的很多app比如QQ空间 ,QQ音乐,墨刀,京东,手机百度等,具体参考:https://facebook.github.io/react-native/showcase.html
RN的优势:
两端并行开发(共享智慧) 热更新(升级) Open standard(React redux cycle…)。 社区力量。优点:
能够在Javascript和React的基础上获得完全一致的开发体验,构建世界一流的原生APP;
仅需学习一次,编写任何平台。(Learn once, write anywhere);
虽然不能做到一次编码到处运行,但是基本上即使是两套代码, 也是相同的jsx语法, 使用js进行开发。用户体验高于html, 开发效率较高;
Flexbox布局据说比native的自适应布局更加简单高效;
可实现在线更新,允许运行于JavaSriptCore的动态加载代码,更贴近于原生开发;
使 App 可以达到每秒 60 帧(足够流畅),并且能有类似原生 App 的外观和手感;
如果你只想给现有的原生应用中添加一两个视图或是业务流程,React Native 也同样不在话下;
缺点:
对开发人员要求较高,不是懂点web技术就行的,当官方封装的控件、API无法满足需求时就必然需要懂一些native的东西去扩展,扩展性仍然远远不如web,也远远不如直接写Native Code;
官方说的很隐晦:learn once,write anywhere。
人家可run anwhere。就是针对不同的平台需要些多套代码;
WEEX(Alibaba)
Alibaba在2016年4月21日Qcon大会上宣布跨平台移动开发工具Weex。Weex框架能够完美兼顾性能与动态性,让移动开发者通过简捷的前端语法写出Native级别的性能体验,并支持iOS、安卓、YunOS及Web等多端部署。
Weex基于开源的Vue.JS, 相比于RN来说入门简单,容易上手。目前阿里系的很多产品 比如淘宝,支付宝和一些小公司app都在用WEEX。
虽然Weex和React Native都支持跨平台开发,但实际还是有一定的区别:Weex的目标是实现代码共用,一次开发多平台运行,能同时支持IOS、Android和Web,降低了开发难度,节约开发成本;
React Native则希望替换整个APP,所以更加注重平台的独立性,其代码需要针对IOS和Android平台编写,代码无法实现完全公用。
Cordova(Apache)
Cordova 是Apache旗下的一个开源的移动开发框架。它允许你使用WEB开发技术(HTML5、CSS3、JavaScript)进行跨平台开发。应用在每个平台的封装器中执行,并且依赖规范的API对设备进行高效的访问,比如传感器、数据、网络状态等等。
Cordova通过对HTML、CSS、JS封装为原生APP。Cordova将不同设备的功能,按标准进行了统一封装,开发人员不需要了解设备的原生实现细节,并且提供了一组统一的JavaScript类库,以及为这些类库所使用的设备相关的原生后台代码。因此实现了“write once, run anywhere”(一次开发,随处运行)。
Cordova前身是PhoneGap。2011年Adobe公司将其收购对其开源,并捐献给Apache,重新命名为Cordova。
优点:
开源免费,社区生态成熟,插件丰富;
支持离线场景应用;
开发工具选择空间大;
iOS和Android基本上可以共用代码,纯web思维,开发速度快, 简单方便,一次编码,到处运行。如果熟悉web开发,文档很全, 系统级支持封装较好,所有UI组件都是有html模拟,可以统一使用;
可实现在线更新,允许动态加载web js;
文档多,开发者多,遇到问题容易解决,技术成熟;
缺点:
只提供基础访问设备的接口,需要自己搭配其他UI框架和JavaScript框架来搭配;
占用内存高一些,不适合做游戏类型app, web技术午无法解决一切问题,对于比较耗能的地方无法利用native的思维实现优势互补,如高体验的交互,动画等;
小程序(Tencent)
小程序就是运行于微信上的功能性的软件或应用。2016年9月21日,微信小程序正式开启内测。2017年1月9日0点,万众瞩目的微信第一批小程序正式低调上线。从技术上来说,微信小程序应用使用HTML5技术。
小程序入手比较简单,目前微信小程序开发在国内也是非常的火爆,许多公司都有这方面的需求。
跨平台方案优缺点
跨平台方案都有的优点:一个工程师就能开发两个平台的APP,能提高生产效率。
跨平台方案都有的缺点: 在JNI, 视频图片处理等一些领域, 开发会比较有难度, 这块业务还是用原生开发比较好. 也可以选择混合开发, 即APP中一般性业务用跨平台或者h5, JNI, 视频图片处理等部分用原生。