现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

移动端跨平台方案:React Native and Flutter

2020-08-12 22:03 工业·编程 ⁄ 共 1756字 ⁄ 字号 暂无评论

什么是跨平台?最常见的定义是:跨平台就是开发就是一套代码写完以后可以多端发布运行到各个平台,比如:iOS、安卓、web。

按照跨平台实现的方式可以分为两类:

一类是需要为每一个平台进行单独的构建或者编译;

另一类,是可以直接在多个平台运行.

现在主流的移动开发平台是Android和iOS,每个平台的开发技术和运行方式都不一样,大家都是针对每个平台开发应用。自然会存在一个移动应用产品要针对每个平台开发一套的现象,这样带来的问题则是开发成本高、效率低下,进而会有进行跨平台开发的需求。

移动端跨平台开发技术演进

以往最早的以Cordova为代表的Hybrid开发,主要依赖于WebView。但是WebView是一个很重的控件,容易产生内存问题,而且复杂的UI在WebView上显示的性能不好。JS与Native代码之间的通信需要使用JSBridge(Native端和Web端双向通信)进行上下文切换,因此会降低一些性能。

React Native技术抛开了WebView,利用JavaScriptCore(JavaScriptCore是JavaScript的虚拟机,为JavaScript的执行提供底层资源)来做桥接,将JS调用转为native调用,只牺牲了小部分性能获取的跨平台开发,这是一大步进步。但是由于依然存在一个从JS代码到原生代码的转化过程,在界面UI被频繁操作的情况下,可能会导致性能问题。

Flutter实现跨平台采用了更为彻底的方案。它既没有采用WebView也没有采用JavaScriptCore,而是自己实现了一套UI框架,然后直接系统更底层渲染系统上画UI。所以他采用的开发语言不是JS,而是Dart。据称Dart语言可以编成原生代码。

Cordova

Cordova 是Apache旗下的一个开源的移动开发框架。它允许你使用WEB开发技术(HTML5、CSS3、JavaScript)进行跨平台开发。应用在每个平台的封装器中执行,并且依赖规范的API对设备进行高效的访问,比如传感器、数据、网络状态等等。

Cordova通过对HTML、CSS、JS封装为原生APP。Cordova将不同设备的功能,按标准进行了统一封装,开发人员不需要了解设备的原生实现细节,并且提供了一组统一的JavaScript类库,以及为这些类库所使用的设备相关的原生后台代码。因此实现了“write once, run anywhere”(一次开发,随处运行)。

Cordova前身是PhoneGap。2011年Adobe公司将其收购对其开源,并捐献给Apache,重新命名为Cordova。

React Native

React Native让开发者使用JavaScript和React编写应用,利用相同的核心代码就可以创建Web,iOS和Android平台的原生应用。React Native着力于提高多平台的开发效率-----仅需学习一次,编写任何平台(Learn once, write anwhere)。

React Native支持标准平台组件使用,在iOS平台我们可以使用UITaBar控件,在Android平台我们可以使用rawer控件。这样App从使用上和视觉上拥有像原生App一样的体验。

2015年9月15日,Facebook发布了React Native for Android,把Web和原生平台的JavaScript开发技术扩展到了Google的流行移动平台。

Flutter

Flutter是面向iOS和Android应用,提供一套基础代码(使用Dart语言)的高性能高可靠软件开发工具包,使开发者能够在iOS和Android两个主要的移动平台上,打造统一代码的高性能应用。

Flutter能够在iOS和Android上运行起来,依靠的是一个叫Flutter Engine的虚拟机,Flutter Engine是Flutter应用程序的运行环境,开发人员可以通过Flutter框架和API在内部进行交互。

在2017年的谷歌I/O大会上,Google推出了Flutter----一款新的用于创建移动应用的开源库。在2018年初世界移动大会上发布Flutter的第一个Beta版本,2018年5月的I/O大会上更新到了Beta3版本,向正式版本有迈进了一步。

给我留言

留言无头像?