移動應用開發中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…

來源:本文爲第三方轉載,若有侵權請聯繫小編刪除。 

相關文章
相關標籤/搜索