移动应用开发中Flutter与React Native的比较

本文来自 angularminds.com ,做者 angularminds.com

React Native是一个开源框架, 由 Facebook 支持, 它发布在 GitHub 上, 涵盖了将 iOS 和 Android 平台的原生 api 结合在一块儿的方式。然而, Google 的 Flutter 是一个全面的举动, 它容许你同时建立 Android 和 iOS 相应迅速的原生应用。html

在这个相互竞争的世界中, 移动应用开发公司的最终目标是选择一个跨平台框架, 使开发人员可以编写一个代码库并跨多个平台进行部署, 共享尽量多的代码,、时间和成本。这样的话, 咱们就能够帮助咱们的客户选择一个合适的框架, 最好地支持他们,实现他们的目标。react

Flutter 是由 Google 构建的移动应用 SDK (软件开发工具包), 它容许咱们建立高性能、高保真度和极快的应用程序, 这些应用程序能够在 Android 和 iOS 等多个平台上运行。如今, 是什么使 Flutter 强大, 由于它有一小部分的 C/C++ 代码, 但它的大部分系统是在 Dart (Dart 是一种通用编程语言最初由 Google 开发) 实现, 开发人员能够很容易地阅读,、替换、 或删除。这给了开发人员对系统的巨大控制。编程

跨平台解决方案中的工具:react-native

  • React Nativeapi

  • Flutterxcode

  • Xamarin网络

  • Progressive Web Apps (PWA)架构

  • Kotlin Nativeapp

  • J2ObjC/Doppl (Android-centric cross-platform)框架

  • Ionic2

  • Cordova/PhoneGap/Titanium

  • Unity

在这份名单中, 咱们选择了2018年最受欢迎的两个解决方案, 即 React Native 和 Flutter。

Flutter Vs React Native 是最适合移动应用开发

近年来, React Native 表现出了很高的人气, 大多来自 ReactJS 和网络社区。用 JavaScript 编写的方式提升了它的普及率, 许多公司都在转向它。而 Flutter 自 2017年 I/O 以来一直受到 Google 的大力推广, 并引发了开发者们的极大兴趣, 它在移动应用开发行业中的新的竞争力并具备长期的潜力。

如下是 Flutter 与 React Native 之间的快速对比

语言栈

Flutter 是一个开源的移动应用程序框架, 它使用一种彻底不一样的编程语言, 称为 Dart, 而 React Native 容许只使用 JavaScript 构建移动应用程序。

React Native (JavaScript)

React Native 容许仅使用 JavaScript 构建移动应用. 它在运行时将其动态 JavaScript 代码编译为原生视图。其他代码在应用程序打包里的虚拟机中运行。

Flutter (Dart)

Dart 是 Google 在2011年开发的通用编程语言。Google 和其余公司的开发人员使用 Dart 为 iOS、Android 和 Web 建立高质量的关键任务应用。Dart 具备面向客户端开发的功能, 很是适合移动和 Web 应用。

Dart Architecture

Dart 基于 C/C++、Java, 支持抽象、封装、继承和多态等特性。Flutter 团队之因此选择 Dart, 是由于它与构建用户界面的方式相匹配, 使用 Dart 桥接, 应用程序的大小更大, 但效果要快得多。与使用 JavaScript 作桥接的 React Native 不一样。

架构

React Native

React Native 的应用程序体系结构称为 Flux。Facebook 使用 Flux 构建客户端 Web 应用程序。每一个框架大多遵循 MVC 框架。单向数据流是 Flux 的主要概念。在这里, React Native 处理视图部分和 Flux, 一种处理 MVC 中的模型的编程模式。

Flux Architecture

Flutter

Dart 应用程序架构库, 具备单向数据流, 灵感来自 RefluxJS 和 Facebook 的 Flux。Flutter-Flux 实现了由 Actions、Stores 和 StoreWatchers 组成的单向数据流模式。它是基于 w_flux, 但修改成使用 Flutter 而不是 React Native。

flutter Architecture

Flutter Flux 实现了一种单向数据流模式, 该模式由 Actions、Stores 和 StoreWatchers 组成。

Flutter 和 React Native 性能

React Native

React Native / NativeScript, 你须要一个桥梁来调用 Swift 或 Android 或 Windows & Mac APIs。 Flutter使用的是 Dart, 因此你不须要那样,一切都是原生的。 这也解决了 JS 生态系统之间的许多不一样版本之间的问题,好比CommonJS, AMD。React Native 开发人员, 在开发混合应用时面临问题, 但对于原生应用, 不会面临任何与性能相关的问题。它在全部标准状况下都提供无缝性能, 而且高度可靠。

Flutter

根据他们的应用性能, 将 Facebook 的 React Native 与 Google 的 Flutter 进行比较, 是 Flutter 打败了竞争对手。Flutter 具备 Dart 的优点, 而且没有 JavaScript 桥接用于处理与设备本机原生组件的交互, 开发速度和运行时间会大大加快。

Flutter 已将动画标准设置为 60fps, 这清楚地代表了其高性能。最后, 因为 Flutter 被编译成 Android 和 iOS 的原生 ARM 代码, 性能是它永远不会面临的一个问题。

用户界面 (UI/UX)

React Native

与 Flutter 的应用不一样, React Native 的应用开发 要求使用第三方库, 由于 React Native 没有本身的 UI 组件库。咱们使用的组件, 如 NativeBase, 这是一个开源 UI 组件库建立的极客。React Native Elements、React Native Material Design 和 Shoutem 是可供用户使用的其余相似 UI 库。

在比较 React Native 与 Flutter 之间的用户界面时, React Native 相似于在没有任何 CSS 框架的状况下使用 HTML。它更多的是基于 Android 和 iOS 的原生组件, 当用户点击操做系统时, 还能够得到更好的用户体验 (UX)。

与 Flutter 的平面应用程序不一样, React Native 没有本身的 UI 组件库, 它使用第三方库和组件,如 NativeBase。NativeBase 是一个开源库, 它在 React Native 之上构建了一个图层, 为您提供了一组基本的 UI 组件。

目前, 有3个主要的 UI 库:

  • Shoutem UI Components

  • React Native Elements

  • Native Base components

Flutter

布局组件目前是应用程序的一部分, 能够包括新的组件, 而且能够修改现有的组件, 使它们具备全新的感受和外观, 趋势如今已经改变, UI 已变得更加用户友好, 易于使用, 增长用户参与, 以及赢得认同。

Flutter 伴随着内置的漂亮的 Material Design 和 Cupertino 像 iOS 的风格的组件, 丰富的行为 API, 流畅的天然滚动, 和平台意识。Flutter 有本身的 UI 组件、Material Design、适应性强的组件集以及渲染它们的引擎同时支持 Android 以及 iOS 平台。

下面是 Flutter 组件的几个示例:

  • Drawer

  • Inkwell

  • GestureDetector

  • DefaultTabController

社区支持

React Native

React Native 在2015年做为开源发布在 GitHub 上, 是 Stack Overflow 上最流行的框架。它是由一个巨大的社区支持,在 GitHub 上有68K 星, 14.5 k 用户细分, ~ 9000 用户不和谐聊天和在 Stack Overflow 上强大的支持, 这就是为何与 Flutter 相比它有更多的第三方类库/插件。

Flutter

Flutter 团队能够在 GitHub 上的一个 ~ 4.5 k 用户细分 dit, ~ 30k 星 ,Google 和 Stack Overflow 约740用户的支持。尽管在 Stack Overflow 开发者调查中 Dart 并无获得太多的喜好, 但早期的博客文章对 Flutter 的使用持确定态度。

Flutter 的社区并不像 React Native 那样强大。但 Google 的 Flutter 团队提供的支持确实不错。他们的文档足够透彻, 能够帮助你, 并在合理的时间范围内解决发布的问题, 这些问题有助于开始使用 Flutter 进行应用程序开发。

Unit Testing

React Native

开发人员拥有全部 JavaScript 框架可用于在单元级别进行测试。然而, 在 UI 和自动化测试方面, 状况并不那么理想。虽然有许多第三方库可用, 但那里并无清晰的概念。

Flutter

Flutter 是一个新的框架, 当涉及到测试一个新的框架, 它在某种程度上是困难的, 但 Flutter 使用 Dart 提供了一个优秀的单元测试框架, 能够利用和 Flutter 为您提供了一个很棒的选择, 以单元测试的速度在运行时测试组件。

开发时间

如今, Web App 开发公司的工做期限很是严格, 若是框架提供了较短的开发时间, 那么公司就有很大的可能选择该框架。

React Native 有许多不一样的第三方库, 如日历、轮播图片和 对话框, 它还具备现成的组件, 从而提升了跨平台应用开发的速度。在 Flutter, 咱们须要为 iOS 和 Android 平台添加单独的文件。在这些文件中的每一个文件中, 咱们都须要添加与平台规则相对应的代码。虽然 Flutter 也承诺高速应用开发。

热加载

JavaScript Based Data Grid Libraries

与真正的原生应用在 Android Studio 和 xcode 中从新编译相比, Flutter 和 React Native 都支持有状态的热从新加载, 速度很是快。若是你的应用遇到错误, 你一般能够修复该错误, 而后继续, 就好像错误从未发生过同样。

你能够在 Flutter 应用运行时对其进行更改, 它将从新加载已更改的应用代码, 并让它从您中断的位置继续。

配置与设置

与 React Native 相比, Flutter 的设置过程要简单得多。Flutter 伴随着系统问题的自动检查, 这在很大程度上是 React Native 的缺失。

开发稳定性:React Native 对比 Flutter

在开发跨平台应用时, 稳定性成为一个重要因素。因为 Flutter 在跨平台行业中是很是新的, 所以采用 SDK 开发跨平台应用的企业数量却少得多。可是, Flutter beta 3, 它提供了改进的开发人员工具和资源系统。

另外一方面, 使用 React Native 框架开发的应用案例数量要高得多。它与之前相比至关稳定, 也获得了大量贡献者社区的支持。

Flutter 对比 React Native 的结论

React Native 和 Flutter 都有本身的利弊. Flutter 在应用开发行业市场上仍然是新的, React Native 在以前就已经开始了, 以得到良好的受众优点。

flutter-vs-react-native_comparasion

我想不少人没有意识到 Flutter + Dart 还没有开发的潜力。对于 Flutter 来讲, 有一些工做要作, 离可以与之竞争还有5年的时间, 但最终, 它将到达那里, 这意味着100% 的跨平台应用程序与100% 的代码共享。

原文连接:www.angularminds.com/blog/articl…

来源:本文为第三方转载,若有侵权请联系小编删除。 

相关文章
相关标签/搜索