<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          在應(yīng)用開發(fā)中,我為什么選擇 Flutter 而不是 React Native ?

          共 3762字,需瀏覽 8分鐘

           ·

          2021-01-23 14:47

          點擊上方“逆鋒起筆”,公眾號回復?pdf
          領(lǐng)取大佬們推薦的學習資料

          作者 | Sanket Doshi

          譯者 | 核子可樂

          策劃 | 李俊辰

          作為一位開發(fā)人員,我想在本文中與大家聊聊跨平臺開發(fā)領(lǐng)域的兩大核心選項——Flutter 與 React Native 框架,并介紹我自己為什么更偏愛 Flutter。

          時至今日,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

          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?

          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)建能力。

          為什么我更傾向于 Flutter

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

          UI 組件與內(nèi)置 API 的豐富 repo

          除了跨平臺代碼可重用性以及對特定于設(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 的核心原因。

          縮小應(yīng)用體積

          對于多數(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 語言也有助于減少樣板代碼量并使用更簡潔的語法。

          開發(fā)高性能應(yīng)用

          在應(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 項目

          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)境。

          應(yīng)用開發(fā)與發(fā)布自動化

          我們都知道,在特定平臺的商店中發(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ā)布體驗的獨門絕技之一。

          QA 測試支持

          良好的框架還應(yīng)該集成一套測試框架,幫助開發(fā)人員針對移動應(yīng)用執(zhí)行單元測試、集成測試與 UI 測試。

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

          相比之下,F(xiàn)lutter 提供開箱即用的測試功能,可輕松執(zhí)行單元測試、功能部件測試以及集成測試。更重要的是,F(xiàn)lutter 還為所有測試提供定義明確的說明文檔。

          ? ? 總結(jié)? ??

          盡管 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

          下載!閑魚最新升級版 Flutter 技術(shù)電子書!
          Flutter 是移動應(yīng)用程序開發(fā)的未來?
          分享 Flutter 學習總結(jié)
          為什么說 Flutter 可能不是下一件大事?
          如何快速提升 Flutter App 中的動畫性能

          點個『在看』支持下?
          瀏覽 36
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  激情五月天色青五月天 | 黄色视频网站亚洲 | 大鸡巴在线 | 国内自拍激情视频 | 色播婷婷丁香五月天 |