2021 年,F(xiàn)lutter 與 React Native 該如何選擇?(flutter和react native怎么選)
2021 年,跨平臺程序員之間關(guān)于 React Native 和 Flutter 的曠日持久的爭論越來越白熱化了。前幾年,React Native 還是開發(fā)人員的首選框架,但是自 2017 年 Flutter 發(fā)布以來,其已經(jīng)發(fā)展成為 React Native 的一個強有力競爭對手。
最近,隨著許多初創(chuàng)公司選擇了 Flutter 用于 MVP 開發(fā),React Native 正在面臨來自 Flutter 的激烈競爭。那么問題來了,哪種應(yīng)用開發(fā)技術(shù)將在 2021 年取得成功呢?
Flutter 應(yīng)用的優(yōu)勢
1. 熱重載 = 快速編碼
Flutter 允許開發(fā)人員使用一種更復(fù)雜、更快速的方式來創(chuàng)建應(yīng)用程序。這是 Flutter 的最大優(yōu)勢之一,也是所有頂級移動應(yīng)用開發(fā)公司都頗為看重的。
開發(fā)人員可以實時對代碼庫做出改進,并立刻看到這些改進反映在請求中。這就是所謂的“熱重載”特性,更改通常只需幾毫秒就能顯示出來。
這一功能讓團隊可以快速添加功能、修復(fù)錯誤和測試新想法。此外,當團隊需要通過協(xié)作來加快開發(fā)速度時,熱重載用起來非常順手。
2. 適用于多個移動平臺的單一代碼庫
Flutter 允許開發(fā)人員為兩個應(yīng)用只編寫一個代碼庫——一個針對 iOS,另一個針對 Android。因為 Flutter 具有自己的模板和布局,它的操作系統(tǒng)無關(guān)的平臺意味著開發(fā)人員可以在兩個不同的系統(tǒng)上使用相同的功能,同時保持每個應(yīng)用都有自己獨特的樣式、可用性和功能。
Flutter for Web 是由谷歌開發(fā)的,為開發(fā)人員提供了必要的信譽保障。一旦應(yīng)用程序上線,就可以用單個代碼庫支持 Android、iOS 和 Web 平臺。
3. 與 React Native 相比,需要的測試只有一半
由于你將在兩個平臺上測試相同的程序,因此質(zhì)量保證流程做起來會快得多。我們編寫了的自動化測試量只有一半,因為在兩個平臺上可以編寫相同的測試,這樣就最大程度地減少了質(zhì)量檢查團隊的工作量。
但是,由于你的質(zhì)量檢查專家必須手動檢查每臺設(shè)備上的應(yīng)用,因此需要進行與原生編程相似級別的手動測試。
為什么有人會更喜歡 React Native 而不是 Flutter?
1. 快速刷新 = 快速編碼
它具有與 Flutter 相同的特性。熱重載加快了開發(fā)過程,并允許程序員將新代碼直接插入正在運行的應(yīng)用程序中。這樣開發(fā)人員無需重新構(gòu)建應(yīng)用程序即可立刻看到改進。
熱重載可以保留應(yīng)用程序的狀態(tài),并避免了在完全重載期間丟失它的風險(就基于狀態(tài)的框架而言,這是一大優(yōu)勢)——這進一步加快了移動應(yīng)用程序成長的速度。
2. 一個代碼庫,兩個移動平臺(甚至更多?。?/span>
就像 Flutter 一樣,你只需編寫一個代碼庫即可運行兩個應(yīng)用程序,一個跑在 Android 上,一個運行在 iOS 上。更好的一點是,因為用的是 JavaScript,所以你在開發(fā)跨平臺應(yīng)用程序時可以和 Web 應(yīng)用共享代碼。你只需使用可對特定平臺編譯的抽象模塊即可。
請參閱以下示例,了解可讓你同時在 iOS 和 Android 及其他系統(tǒng)(包括 Web 和桌面應(yīng)用)上編程的庫:
React Native for Web 是一個跨平臺應(yīng)用,支持 Android、iOS 和 Web(Twitter 使用它來創(chuàng)建 Twitter Lite)。
ReactXp——Skype 開發(fā)的一個應(yīng)用,支持 Android、iOS、互聯(lián)網(wǎng)和 Windows 10(UWP)。
微軟團隊為所有 Windows 10 用戶(PC、平板電腦、二合一、Xbox、混合現(xiàn)實設(shè)備等)創(chuàng)建了 React-native-windows。
React Native 程序員對事物的看法和采取的行動與大多數(shù)人是不同的。
你可以假設(shè) Web 桌面應(yīng)用、移動 Web 應(yīng)用和原生應(yīng)用都具有相同的業(yè)務(wù)邏輯,但是它們需要不同的 UI 才能滿足不同的用戶需求。
3. 它使用了流行的編程語言——JavaScript
React Native 使用的是 JavaScript 這種常用的編程語言,而 Dart 尚不為人所知。如果你是喜歡統(tǒng)計數(shù)據(jù)的開發(fā)人員,也可以使用 TypeScript(一個 JavaScript 的超集)。
4. 開發(fā)者的選擇自由
開發(fā)人員可以使用 React Native 開發(fā)跨平臺應(yīng)用程序。
優(yōu)勢在于,React Native 允許你根據(jù)項目需求和開發(fā)人員的偏好來精確選擇要使用的解決方案。
例如,如果開發(fā)人員需要處理全局狀態(tài)(如何在單個應(yīng)用程序中存儲和管理多個組件使用的數(shù)據(jù)),則他們可以使用自定義用戶界面庫或編寫自己的用戶界面庫;他們可以使用庫路由器,或在 JavaScript 和 TypeScript 做出選擇。
選擇一種框架之前要考慮的事情
對很多人來說,F(xiàn)lutter 比 React Native 更難學習。React Native 在開發(fā)人員中很流行,因為它使用了 JavaScript 這種著名的編程語言。因此,如果你是 Dart 的新手,學習 Flutter 的時間可能比學習 React Native 的時間更長。但反之亦然:如果你以前曾用過 Dart,那么學習 Flutter 將會很容易。
由于 React Native 中的組件非常簡單,因此設(shè)置它們的樣式時你必須付出很多工作。只有少數(shù)幾個模塊可以識別平臺,并且?guī)缀醵夹枰獮?iOS 和 Android 應(yīng)用不同的特性,或者設(shè)置不同的樣式。
另一方面,F(xiàn)lutter 將組件視為小部件,此外,這些小部件基于 Material Design,所以可以高度自定義。大多數(shù)小部件都是自適應(yīng)的,這意味著它們可以同時在 Android 和 iOS 上使用。
Flutter 在性能方面具有優(yōu)勢,因為它可以編譯為 ARM 或 x86 原生資源,因此非??臁?/span>
React Native 只是原生方法的包裝,也就是說它架起了一座橋梁,將某些調(diào)用轉(zhuǎn)換為原生 API;當存在許多原生調(diào)用時,這就會成為瓶頸。
React Native 沒有轉(zhuǎn)換為原生代碼,它還有 JavaScript 層,而渲染這些代碼的性能要比 Flutter 低。這里有一些解決方法,但是 Flutter 就用不著操心這些,因為視圖層就像游戲一樣簡單——而且,由于 Flutter 工程師構(gòu)建了所有組件,因此對橋梁的原生調(diào)用更少,因為它們只是原生視圖的包裝。
使用 React Native 組件將無法獲得足夠的自定義能力。因此,如果有人選擇不包裝一個進程,就無法使用它(例如,視圖周圍的虛線框?qū)⒉黄鹱饔茫⑶襾碜怨雀韬吞O果的新組件需要很長時間才能出現(xiàn)在 React Native 中。
React 的 bug 修補也開始需要更長的時間。例如邊界破裂問題,以及支持不同風味的問題,等等。大多數(shù) React Native 公司正在制作定制的分叉來修復(fù)上游未修補的 bug。Flutter 開發(fā)人員更加謹慎,修復(fù)往往很快。到最后你可能把大部分時間花在 React Native 文檔中,查找各種問題,試圖找出事情沒有按預(yù)期進行的原因。
總結(jié)
我們希望本文中的信息能幫助你確定以下問題的答案:“Flutter 還是 React Native,哪個更好?”就一般共識而言,谷歌的 flutter 將繼續(xù)作為 SDK 存在,并且可能在未來幾年內(nèi)取代 React Native 的地位。如果在未來技術(shù)的重要性變得更大,那么在選擇最佳解決方案的同時緊跟趨勢是非常重要的。
原文鏈接:
https://hackernoon.com/flutter-vs-react-native-what-to-choose-in-2021-ik1n35ta?source=rss