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