在應(yīng)用開發(fā)中,我為什么選擇 Flutter 而不是 React Native ?
點擊上方“逆鋒起筆”,公眾號回復?pdf 領(lǐng)取大佬們推薦的學習資料
作者 | Sanket Doshi
譯者 | 核子可樂
策劃 | 李俊辰
時至今日,React Native 與 Flutter 已經(jīng)成為兩大領(lǐng)先跨平臺開發(fā)框架。這兩套框架之所以極具人氣,是因為它們不僅能夠簡化開發(fā)、代碼重用等常規(guī)工作,同時提供高度原生化的界面外觀以及強有力的技術(shù)支持。
雖然二者的價值主張相似,但有很多方面仍存在不少差別。雙方都能幫助開發(fā)人員更快、更輕松地構(gòu)建并發(fā)布應(yīng)用程序,但作為成熟度更高的框架選項,React Native 的社區(qū)規(guī)模更大;而 Flutter 則提供更多內(nèi)置工具,可幫助用戶減少對第三方工具的依賴。
我之所以更傾向于 Flutter,當然是覺得它在很多方面比 React Native 的表現(xiàn)更好。在解釋具體原因之前,咱們不妨先聊聊這些框架的基本情況,以及它們分別適合處理的應(yīng)用項目類型。
React Native 是由 Facebook 公司于 2015 年開發(fā)并發(fā)布的。這是一套開源跨平臺應(yīng)用程序開發(fā)框架,適用于移動及 Web 等多種應(yīng)用程序項目。
自 React Native 以來,其普及的腳步就一直勢不可擋,并成為當前開發(fā)者群體中最受歡迎的框架之一。根據(jù) Statista 發(fā)布的一項研究,截至 2020 年,約有 42% 的開發(fā)者更喜歡使用 React Native 構(gòu)建跨平臺應(yīng)用程序。
從簡單的跨平臺應(yīng)用程序到應(yīng)用原型設(shè)計、原生應(yīng)用項目以及 Web 應(yīng)用等等,React Native 的身影廣泛出現(xiàn)在各類場景。由于它允許開發(fā)人員重用組件及即用型代碼,React Native 完全能夠滿足各類開發(fā)項目的需求。
Flutter 是由谷歌開發(fā)的強大開源應(yīng)用開發(fā)框架,于 2017 年正式亮相。Flutter 不僅可用于構(gòu)建跨平臺移動應(yīng)用與 Web 應(yīng)用,同時也可用于構(gòu)建桌面應(yīng)用程序。
除了代碼庫可重用性這一核心價值主張之外,F(xiàn)lutter 在其他方面也有著自己的獨特亮點。例如,它可以對接功能強大的 UI 設(shè)計套件、使用面向?qū)ο蟮木幊陶Z言 Dart 并提供功能強大的內(nèi)置工具集。根據(jù)前文提到的 Statista 研究報告,F(xiàn)lutter 目前在 39% 的開發(fā)者中被評為首選跨平臺應(yīng)用程序開發(fā)框架。
盡管 Flutter 相對較為年輕,但其人氣上漲速度很快。而且根據(jù)不少行業(yè)專家的說法,F(xiàn)lutter 才是掌握跨平臺應(yīng)用開發(fā)未來的關(guān)鍵所在。Flutter 還支持 Material Design,可對操作系統(tǒng)級功能進行訪問,并擁有良好的 MVP 應(yīng)用構(gòu)建能力。
一段時間以來,React Native 一直是全球領(lǐng)先的跨平臺開發(fā)框架。而且在 Flutter 出現(xiàn)之前,React Native 可謂無可匹敵。但 Flutter 實際上提供的功能更多,而且補足了 React Native 所欠缺的不少要素。
除了跨平臺代碼可重用性以及對特定于設(shè)備的 UI 進行通信之外,F(xiàn)lutter 還附帶有豐富的 UI 呈現(xiàn)組件儲備。這些開箱即用的組件可以幫助開發(fā)人員輕松定制用戶界面,且不會對定制化及性能產(chǎn)生任何影響。
相比之下,在使用 React Native 構(gòu)建應(yīng)用程序時,開發(fā)人員則需要依賴于第三方工具來進行特定于設(shè)備的本地 UI 渲染,這可能會影響到最終性能以及定制化設(shè)計的實現(xiàn)范圍。
另一方面,F(xiàn)lutter 可以提供內(nèi)置組件以訪問 API、導航元素、狀態(tài)管理、應(yīng)用程序測試以及其他實用度極強的 repo,而不必依賴于第三方 API 及 React Native 等工具。這種對原生模塊的訪問能力,正是我個人喜愛 Flutter 的核心原因。
對于多數(shù)應(yīng)用項目,開發(fā)人員總是希望應(yīng)用體積能夠越小越好。體積更大,意味著用戶等待下載的時間更長、占用的存儲空間更大,而這一切都會給應(yīng)用的人氣乃至下載量產(chǎn)生負面影響。在這方面,F(xiàn)lutter 的表現(xiàn)同樣領(lǐng)先于 React Native。
Flutter 應(yīng)用體積更小,這是因為 Flutter 所使用的 API 與 React Native 使用的 API 相比更小一些。再有,Dart 語言也有助于減少樣板代碼量并使用更簡潔的語法。
在應(yīng)用性能方面,F(xiàn)lutter 同樣明顯領(lǐng)先于 React Native。在幾乎所有性能測試中,F(xiàn)lutter 的性能都比 React Native 更好。
其背后的一大核心原因,在于二者用于同原生組件進行通信的語言有所區(qū)別。React Native 需要使用格拉器或中間件才能通過 JavaScript 與原生組件進行通信,而 Flutter 則完全不需要。這不僅可以加快開發(fā)速度,更可以優(yōu)化運行速度。例如,在使用 Flutter 時,應(yīng)用中動畫的運行速率可以達到每秒 60 幀。
對于混合應(yīng)用開發(fā),在將代碼、原生組件以及庫集成至新架構(gòu)中時,React Native 會帶來更高的復雜性。Flutter 在這方面也有優(yōu)勢,它能夠更輕松地將代碼集成至原生平臺當中。更重要的是,憑借對 C++ 引擎的支持,F(xiàn)lutter 開發(fā)難度也更低一些。
由于 Flutter 應(yīng)用程序可以直接在原生 iOS 或 Android 平臺上進行代碼編譯,因此與使用其他框架構(gòu)建應(yīng)用程序相比,其性能問題要少得多??偠灾?,F(xiàn)lutter 應(yīng)用在速度與性能方面都較 React Native 有著顯著優(yōu)勢。
DevOps 開發(fā)方法目前非常流行,這種更為精簡的流程不僅可以節(jié)約開發(fā)時間,同時也讓開發(fā)團隊得以輕松橋接多種不同功能。同樣的,如今的應(yīng)用程序項目中也廣泛采用持續(xù)集成(CI)與持續(xù)交付(CD)機制,借此避免編碼錯誤并持續(xù)根據(jù)用戶反饋提供更好的輸出結(jié)果。
關(guān)于如何支持這些先進方法,React Native 一直缺少明確的官方 CI/CD 或 DevOps 方法說明文檔。相比之下,F(xiàn)lutter 附帶有非常詳細的說明文檔及關(guān)于持續(xù)集成、測試及開發(fā)的專項指南。最重要的是,F(xiàn)lutter 提供豐富的命令行界面,可幫助大家輕松設(shè)置持續(xù)集成與持續(xù)開發(fā)環(huán)境。
我們都知道,在特定平臺的商店中發(fā)布移動應(yīng)用往往是個令人頭痛的苦差事。而這方面工作在跨平臺移動應(yīng)用項目中,無疑更加困難萬分。
React Native 在官方文檔中并不提供任何明確的支持或定義步驟,導致開發(fā)者找不到得到廣泛認可的發(fā)布流程自動化指南。在使用 React Native 時,開發(fā)人員往往只能以手動操作在相應(yīng)的應(yīng)用市場中發(fā)布自己的產(chǎn)品。
Flutter 則提供強大且定義明確的命令行界面。通過參考 Flutter 說明文檔內(nèi)的步驟并配合命令行工具,開發(fā)人員可以輕松發(fā)布并啟動應(yīng)用程序。這種豐富的自動化工具及指導文檔儲備,正是 Flutter 改善用戶開發(fā)與發(fā)布體驗的獨門絕技之一。
良好的框架還應(yīng)該集成一套測試框架,幫助開發(fā)人員針對移動應(yīng)用執(zhí)行單元測試、集成測試與 UI 測試。
盡管 React Native 開發(fā)人員可以使用 JavaScript 提供的多種單元測試框架,但這些框架并不具備任何官方測試支持。為了進行測試,React Native 開發(fā)者需要依賴于其他第三方工具,例如 Appium。
相比之下,F(xiàn)lutter 提供開箱即用的測試功能,可輕松執(zhí)行單元測試、功能部件測試以及集成測試。更重要的是,F(xiàn)lutter 還為所有測試提供定義明確的說明文檔。
盡管 React Native 與 Flutter 在正面對抗中可謂各擅勝場,但 Flutter 擁有更豐富的內(nèi)置支持、工具與說明文檔選項。其支持的面向?qū)ο?、語法簡單且易于編碼的 Dart 語言則進一步擴大了 Flutter 的比較優(yōu)勢。React Native 仍是一套出色的框架,如同其誕生時一樣出色,但 Flutter 似乎帶來更多不容忽視的價值增益。如何選擇,請各位斟酌。關(guān)注公眾號 逆鋒起筆,回復 pdf,下載你需要的各種學習資料。
https://dzone.com/articles/why-use-flutter-over-react-native-for-app-developm
點個『在看』支持下?

