在應用開發中,我爲什麼選擇 Flutter 而不是 React Native ?

Python實戰社羣

Java實戰社羣

長按識別下方二維碼,按需求添加

掃碼關注添加客服

進Python社羣▲

掃碼關注添加客服

進Java社羣


作者 | Sanket Doshi

譯者 | 核子可樂

策劃 | 李俊辰

來源丨前端之巔(ID:frontshow)

作爲一位開發人員,我想在本文中與大家聊聊跨平臺開發領域的兩大核心選項——Flutter 與 React Native 框架,並介紹我自己爲什麼更偏愛 Flutter。

時至今日,React Native 與 Flutter 已經成爲兩大領先跨平臺開發框架。這兩套框架之所以極具人氣,是因爲它們不僅能夠簡化開發、代碼重用等常規工作,同時提供高度原生化的界面外觀以及強有力的技術支持。

雖然二者的價值主張相似,但有很多方面仍存在不少差別。雙方都能幫助開發人員更快、更輕鬆地構建併發布應用程序,但作爲成熟度更高的框架選項,React Native 的社區規模更大;而 Flutter 則提供更多內置工具,可幫助用戶減少對第三方工具的依賴。

我之所以更傾向於 Flutter,當然是覺得它在很多方面比 React Native 的表現更好。在解釋具體原因之前,咱們不妨先聊聊這些框架的基本情況,以及它們分別適合處理的應用項目類型。

React Native

React Native 是由 Facebook 公司於 2015 年開發併發布的。這是一套開源跨平臺應用程序開發框架,適用於移動及 Web 等多種應用程序項目。

自 React Native 以來,其普及的腳步就一直勢不可擋,併成爲當前開發者羣體中最受歡迎的框架之一。根據 Statista 發佈的一項研究,截至 2020 年,約有 42% 的開發者更喜歡使用 React Native 構建跨平臺應用程序。

從簡單的跨平臺應用程序到應用原型設計、原生應用項目以及 Web 應用等等,React Native 的身影廣泛出現在各類場景。由於它允許開發人員重用組件及即用型代碼,React Native 完全能夠滿足各類開發項目的需求。

 Flutter 

Flutter 是由谷歌開發的強大開源應用開發框架,於 2017 年正式亮相。Flutter 不僅可用於構建跨平臺移動應用與 Web 應用,同時也可用於構建桌面應用程序。

除了代碼庫可重用性這一核心價值主張之外,Flutter 在其他方面也有着自己的獨特亮點。例如,它可以對接功能強大的 UI 設計套件、使用面向對象的編程語言 Dart 並提供功能強大的內置工具集。根據前文提到的 Statista 研究報告,Flutter 目前在 39% 的開發者中被評爲首選跨平臺應用程序開發框架。

儘管 Flutter 相對較爲年輕,但其人氣上漲速度很快。而且根據不少行業專家的說法,Flutter 纔是掌握跨平臺應用開發未來的關鍵所在。Flutter 還支持 Material Design,可對操作系統級功能進行訪問,並擁有良好的 MVP 應用構建能力。

爲什麼我更傾向於 Flutter

一段時間以來,React Native 一直是全球領先的跨平臺開發框架。而且在 Flutter 出現之前,React Native 可謂無可匹敵。但 Flutter 實際上提供的功能更多,而且補足了 React Native 所欠缺的不少要素。

UI 組件與內置 API 的豐富 repo

除了跨平臺代碼可重用性以及對特定於設備的 UI 進行通信之外,Flutter 還附帶有豐富的 UI 呈現組件儲備。這些開箱即用的組件可以幫助開發人員輕鬆定製用戶界面,且不會對定製化及性能產生任何影響。

相比之下,在使用 React Native 構建應用程序時,開發人員則需要依賴於第三方工具來進行特定於設備的本地 UI 渲染,這可能會影響到最終性能以及定製化設計的實現範圍。

另一方面,Flutter 可以提供內置組件以訪問 API、導航元素、狀態管理、應用程序測試以及其他實用度極強的 repo,而不必依賴於第三方 API 及 React Native 等工具。這種對原生模塊的訪問能力,正是我個人喜愛 Flutter 的核心原因。

縮小應用體積

對於多數應用項目,開發人員總是希望應用體積能夠越小越好。體積更大,意味着用戶等待下載的時間更長、佔用的存儲空間更大,而這一切都會給應用的人氣乃至下載量產生負面影響。在這方面,Flutter 的表現同樣領先於 React Native。

Flutter 應用體積更小,這是因爲 Flutter 所使用的 API 與 React Native 使用的 API 相比更小一些。再有,Dart 語言也有助於減少樣板代碼量並使用更簡潔的語法。

開發高性能應用

在應用性能方面,Flutter 同樣明顯領先於 React Native。在幾乎所有性能測試中,Flutter 的性能都比 React Native 更好。

其背後的一大核心原因,在於二者用於同原生組件進行通信的語言有所區別。React Native 需要使用格拉器或中間件才能通過 JavaScript 與原生組件進行通信,而 Flutter 則完全不需要。這不僅可以加快開發速度,更可以優化運行速度。例如,在使用 Flutter 時,應用中動畫的運行速率可以達到每秒 60 幀。

對於混合應用開發,在將代碼、原生組件以及庫集成至新架構中時,React Native 會帶來更高的複雜性。Flutter 在這方面也有優勢,它能夠更輕鬆地將代碼集成至原生平臺當中。更重要的是,憑藉對 C++ 引擎的支持,Flutter 開發難度也更低一些。

由於 Flutter 應用程序可以直接在原生 iOS 或 Android 平臺上進行代碼編譯,因此與使用其他框架構建應用程序相比,其性能問題要少得多。總而言之,Flutter 應用在速度與性能方面都較 React Native 有着顯著優勢。

DevOps 項目

DevOps 開發方法目前非常流行,這種更爲精簡的流程不僅可以節約開發時間,同時也讓開發團隊得以輕鬆橋接多種不同功能。同樣的,如今的應用程序項目中也廣泛採用持續集成(CI)與持續交付(CD)機制,藉此避免編碼錯誤並持續根據用戶反饋提供更好的輸出結果。

關於如何支持這些先進方法,React Native 一直缺少明確的官方 CI/CD 或 DevOps 方法說明文檔。相比之下,Flutter 附帶有非常詳細的說明文檔及關於持續集成、測試及開發的專項指南。最重要的是,Flutter 提供豐富的命令行界面,可幫助大家輕鬆設置持續集成與持續開發環境。

應用開發與發佈自動化

我們都知道,在特定平臺的商店中發佈移動應用往往是個令人頭痛的苦差事。而這方面工作在跨平臺移動應用項目中,無疑更加困難萬分。

React Native 在官方文檔中並不提供任何明確的支持或定義步驟,導致開發者找不到得到廣泛認可的發佈流程自動化指南。在使用 React Native 時,開發人員往往只能以手動操作在相應的應用市場中發佈自己的產品。

Flutter 則提供強大且定義明確的命令行界面。通過參考 Flutter 說明文檔內的步驟並配合命令行工具,開發人員可以輕鬆發佈並啓動應用程序。這種豐富的自動化工具及指導文檔儲備,正是 Flutter 改善用戶開發與發佈體驗的獨門絕技之一。

QA 測試支持

良好的框架還應該集成一套測試框架,幫助開發人員針對移動應用執行單元測試、集成測試與 UI 測試。

儘管 React Native 開發人員可以使用 JavaScript 提供的多種單元測試框架,但這些框架並不具備任何官方測試支持。爲了進行測試,React Native 開發者需要依賴於其他第三方工具,例如 Appium。

相比之下,Flutter 提供開箱即用的測試功能,可輕鬆執行單元測試、功能部件測試以及集成測試。更重要的是,Flutter 還爲所有測試提供定義明確的說明文檔。

    總結    

儘管 React Native 與 Flutter 在正面對抗中可謂各擅勝場,但 Flutter 擁有更豐富的內置支持、工具與說明文檔選項。其支持的面向對象、語法簡單且易於編碼的 Dart 語言則進一步擴大了 Flutter 的比較優勢。React Native 仍是一套出色的框架,如同其誕生時一樣出色,但 Flutter 似乎帶來更多不容忽視的價值增益。如何選擇,請各位斟酌。

 延伸閱讀

https://dzone.com/articles/why-use-flutter-over-react-native-for-app-developm

程序員專欄 掃碼關注填加客服 長按識別下方二維碼進羣

近期精彩內容推薦:  

 阿里徹底拆中臺了!

 程序員相親圖鑑

 21 歲理工男開源的這個編輯器火了!

 996 違法???


在看點這裏好文分享給更多人↓↓

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章