本文是幫助你瞭解這兩個應用程序開發框架區別指南。我們知道,幾年前開發和維護iOS和Android的應用程序曾經是一項艱鉅的任務(獨立的代碼庫|獨立的開發團隊|開發成本也忒高)。前端
一堆狗屎。react
移動行業渴望進行一場革命,以遏制移動應用程序開發過程當中出現的問題。c++
所以,跨平臺開發的形式就此出現了。如今,維護代碼和開發應用程序對於開發人員來講變得簡單且耗時也少了。git
不只開發商,企業和初創公司也經過爲跨平臺應用的方式來開發他們的業務。不出所料,他們喜歡它。github
爲了提升應用開發的效率,愈來愈多的跨平臺應用開發框架應運而生。編程
臉書在2015年又跳了回來,推出了React native。服務器
毫無疑問,它獲得很好的迴應。現在,React native 是 Facebook、沃爾瑪(Walmart)、優步(UberEats)、Instagram 和特斯拉(Tesla)等應用程序的幕後支持者。架構
後來,谷歌也加入了進來,並推出了廣受好評的跨平臺框架 Flutter。並保證了全部應用程序都具備原生性能。框架
從那時起,新創公司和企業就面臨着如何選擇應用程序開發的兩難境地。這使得 Flutter 與 React native 的爭論更加激烈。編程語言
在本文中,咱們將討論React Native 和 Google 的 Flutter 之間備受爭議的論點。
想閱讀更多優質文章請猛戳GitHub博客,一年百來篇優質文章等着你!
Flutter 是谷歌的移動UI框架,能夠快速在 iOS 和 Android上構建高質量的原生用戶界面。
React Native (簡稱RN)是Facebook於2015年4月開源的跨平臺移動應用開發框架,是Facebook早先開源的JS框架 React 在原生移動應用平臺的衍生產物,目前支持iOS和安卓兩大平臺。RN使用Javascript語言,相似於HTML的JSX,以及CSS來開發移動應用,所以熟悉Web前端開發的技術人員只需不多的學習就能夠進入移動應用開發領域。
如今你已經有了基本的認識,讓我們來看看在 2019 年的 React nNtive 和 Flutter 中哪一個更好?
讓咱們詳細看看這兩個平臺之間的差別,並找出使用 React native 和Flutter 的優缺點。
跨平臺的應用程序開發框架都使用不一樣的編程語言。
React native 可使用 Javascript開發,這不須要任何介紹。長期以來,它一直是開發人員最好的編程語言。
所以,能夠理解爲何 React Native 在開發特定於服務器,Web或移動應用程序時得到了極大的歡迎。
然而,由谷歌開發的Flutter 使用了一種新的編程語言 Dart。對於開發人員來講,這是一個新技術,可是那些具備c++和JAVA等OOP語言經驗的開發人員能夠輕鬆地學習編寫代碼。
Dart 基於 C/C++、Java、支持抽象、封裝、繼承和多態等特性。Flutter 團隊之因此選擇 Dart,是由於它與構建用戶界面的方式相匹配,使用 Dart 橋接,應用程序的大小更大,但效果要快得多。與使用 JS 作橋接的 React Native 不一樣。
企業,特別是初創企業尋找一個可以在更短的時間內爲他們提供服務應用的平臺。
談論Flutter 與 React Native 開發速度; React Native 得到了優點。 其即用型組件可幫助開發人員快速製做應用程序。 另外一方面,Flutter 是一個尋求在開發時間方面擊敗競爭對手的新平臺。
根據數據分析,React native 在美國的市場份額爲4.3%。
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 代碼, 性能是它永遠不會面臨的一個問題。
總之,兩種平臺的性能都比較接近。
在 React native 中,構建移動應用程序有兩種架構類型,Flux 和 Redux。
Flux
由Facebook 製做,而 Redux
受社區青睞。 因爲單向數據流,App 是無狀態, 由於應用程序的狀態被 store
管理着。
做爲一個新手,Flutter
很難爲移動應用程序指定最佳架構。可是,也有一些受歡迎的組件,好比BloC(業務邏輯組件)。它們主要依賴於streams
和 RXDart
(Reactive Dart)。
若是咱們談 React native 的 IDE,幾乎主流的IDE 都支持。然而,目前,Flutter 的 IDE 只有 Android studio/IntelliJ 和 visual studio 支持。
因爲 React Native 使用 JS 語言開發,對於新手來講,學習曲線很容易。另外一方面,Dart 做爲新發明的語言對開發人員來講有些困難。可是,那些有 c++ 和 Java 經驗的人能夠輕鬆地學習它。
Google 的 Dart 沒有模板,樣式和數據文件的分離。 所以,代碼變得有點難以理解。 而Javascript遵循簡單的代碼結構。 所以,開發人員更清楚地理解和編寫代碼。
完美移動應用程序最重要的一個方面是穩定性。這兩個平臺都獲得了領先技術社區的支持,所以對穩定性毫無疑問,二者都有很好的穩定性。
React native 擁有大量的社區支持,所以,它成爲最受歡迎和最可靠的框架之一。
另外一方面,Flutter 推出了新版本的beta 2
,它也爲開發人員提供了一些使人印象深入的特性。
在提供靈活性和定製方面,React native顯然處於領先地位。經過直接與原平生臺交互,提供了無縫的用戶體驗。
然而,Flutter提供了一組豐富定製的 widgets 來建立一種引人入勝的體驗。雖然它正處於測試階段,試圖在市場上站穩腳跟。
說到人氣方面,正如咱們提到的,React native 在混合應用程序開發中已經變得很是突出。它是任何 iOS 或 Android 項目開發人員的最愛。
不管它是一個小項目仍是一個大項目,大量的組件都使它受到了應有的歡迎。
相反,正如咱們所知,Flutter
正處於起步階段,並試圖在移動應用程序開發上留下本身的印記。咱們不能忽視的事實,在推出的當天,Flutter 在 Twitter
上的趨勢如上圖。
世界電子商務巨頭阿里巴巴正在使用 Flutter,這代表了 Flutter 在混合應用開發方面的廣闊前景。
RN 和 Flutter 差別表:
工程技術 | React Native | Flutter |
首次發佈 | 2015年1月 | 2017年5月 |
公司 | ||
編碼語言 | JavaScript | Dart |
Github Stars(2019年) | 77,827 | 66,183 |
學習難度 | React或Javascript經驗豐富的開發人員易於學習 | 對於新手相對較難,但對於經驗豐富的C++和JAVA專家來講,這很容易學習 |
主要架構 | Flux & Redux | bLoC |
組件 | 有些是自動適應的 | 非適應性,須要手動配置 |
生態 | 成熟 | 還未成熟 |
熱更新 | 支持 | 支持 |
UI 組件 | 操做系統的原生組件 | Flutter |
文檔 | 相對完整 | 相對混亂 |
原生性能 | 好 | 很好 |
主要用戶 | Facebook, Instagram, Pinterest,特斯拉,優步,沃爾瑪,Wix.com | 阿里巴巴,Google Greentea,谷歌搜索引擎,App tree,騰訊 |
咱們已經看到了這兩個平臺之間的差別。但在某些領域,它們也有類似之處。
React Native 和 Flutter 都有本身的利弊. Flutter 在應用開發行業市場上仍然是新的, React Native 在以前就已經開始了, 以得到良好的受衆優點。
乾貨系列文章彙總以下,以爲不錯點個Star,歡迎 加羣 互相學習。
https://github.com/qq44924588...
我是小智,公衆號「大遷世界」做者,對前端技術保持學習愛好者。我會常常分享本身所學所看的乾貨,在進階的路上,共勉!
關注公衆號,後臺回覆福利,便可看到福利,你懂的。