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

          為什么說 Flutter 可能不是下一件大事?

          共 4321字,需瀏覽 9分鐘

           ·

          2020-12-01 14:04

          點擊“開發(fā)者技術(shù)前線”,選擇“星標(biāo)?”

          讓一部分開發(fā)者看到未來

          作者 | Michael Long??譯者 | 王強(qiáng)? ?策劃 | 蔡芳芳 來自前端之巔
          Flutter 很酷,但它當(dāng)不成大明星,這篇文章會告訴你原因。

          我注意到最近有很多文章將 Flutter 宣傳為“下一件大事”(next big thing)。一些人甚至詳細(xì)解釋了 Flutter 為什么會替代 React Native 成為開發(fā)人員首選的跨平臺技術(shù)。

          但它并沒有那個能力。

          我見識過 Flutter 的很多缺陷,我認(rèn)為它遇到了幾個關(guān)鍵問題。

          請注意,本文在 Flutter 社區(qū)中招來了很多熱情的評論,贊成和反對皆有。我強(qiáng)烈建議讀者讀完本文,再去原文看評論區(qū)大家的正反意見。

          它不是 React Native

          只要談到跨平臺技術(shù),React Native 是繞不開的。

          React Native 之所以受歡迎,是因為很多人相信它的愿景,并認(rèn)為自己的前端 JavaScript 開發(fā)人員可以創(chuàng)建一流的應(yīng)用。他們當(dāng)然做不到,但這并不能阻止他們嘗試一番。

          問題是許多公司已經(jīng)有了 JavaScript 開發(fā)人員。而且 JavaScript 人士常常會告訴管理層:“是的,我們可以節(jié)約一半時間。”

          正如我指出的那樣,其實他們做不到。確實,只要你入了門,起碼 80% 的應(yīng)用你都能很快搞出來個大概。可是你要將 80% 的時間花在應(yīng)用的外觀調(diào)整上,讓它能在各個平臺上正確運行。

          說到各個平臺……

          它不是原生的

          Flutter 的 Skia 渲染引擎可以讓你的應(yīng)用模仿原生的外觀和體驗,但也只是模仿而已。它可以編譯為原生代碼,但并不會使用原生按鈕、字段、切換、滾動條、表視圖或其他界面和導(dǎo)航元素。

          蘋果和谷歌幾乎在每個發(fā)行版上都會調(diào)整和更新這些界面元素及其行為。因此,只要應(yīng)用忽略它們,就別想跟上節(jié)奏了。

          此外,如果 iOS 上的 Flutter 出現(xiàn)錯誤,你只能等待谷歌來修復(fù)了。

          說到 iOS……

          二等公民

          我應(yīng)該強(qiáng)調(diào)一下,我是從 iOS 的角度開始體驗 Flutter 的,而 Flutter 的確讓 iOS 感覺像是二等公民。

          Flutter 基本上是 Android 優(yōu)先的開發(fā)環(huán)境,從底層開始就依賴 Android 的 Material Design 指南。

          因此,如果你想開箱即用地創(chuàng)建看起來像 Android 應(yīng)用、動起來也像 Android 應(yīng)用的東西,F(xiàn)lutter 很合適——否則……就沒那么舒服了。

          此外,iOS 開發(fā)正在擴(kuò)展到蘋果生態(tài)系統(tǒng)內(nèi)的許多平臺(watchOS、tvOS、iPadOS、macOS),因此 Flutter 只能帶你入個門而已。

          當(dāng)然,使用 Cupertino 小部件可以解決部分問題,但是……

          程序的大部分內(nèi)容仍需寫兩次代碼

          正如我剛剛指出的,Android 同時提供 Cupertino 和 Material 小部件。

          這的確很不錯,但這也意味著,如果你希望應(yīng)用程序看著像原生一樣(順便說一句,React Native 是做得到的),你還得使用正確的小部件集來完成工作。這可能意味著界面的某些部分需要寫兩次代碼。

          更不用說你可能還必須為各個平臺針對性地重組應(yīng)用的各個部分,以適應(yīng)平臺的外觀和風(fēng)格(這個平臺要求導(dǎo)航欄在標(biāo)簽欄內(nèi),那個平臺正好相反,諸如此類的問題)。

          是的,你可以重用業(yè)務(wù)邏輯,但是我認(rèn)為這并不能解決在兩個平臺上編寫、測試和調(diào)試用戶界面的問題。

          它不是 HTML

          一些人在評論中還提到 Flutter 可用于 Web,因此你可以免費獲得“另一個”平臺。

          是的,你可以將 Flutter 用于 Web……盡管 Web 版本仍然處于 beta 階段,甚至谷歌在大多數(shù)情況下都不推薦使用它。

          目前,并非每種 HTML 場景都適合用 Flutter 編寫。例如,博客文章之類基于流的富文本內(nèi)容更適合以文檔為中心的模型,這種模型是 Web 的基礎(chǔ);而像 Flutter 這樣的 UI 框架可以提供的是以應(yīng)用為中心的服務(wù),和前者并不相稱。

          因此,是的,如果你想做一些數(shù)據(jù)可視化、制作一個在線工具(例如汽車配置器),或者制作某種嵌入式圖表(同樣也是谷歌推薦的用例),那都沒問題。

          問題是,我們不是剛剛將一些沉重的、非 HTML 的應(yīng)用渲染技術(shù)趕出了互聯(lián)網(wǎng)嗎?

          它的支持很差

          盡管 Flutter 的支持和文檔狀況略有改善,但遠(yuǎn)遠(yuǎn)無法和在 iOS 或 Android 上進(jìn)行原生應(yīng)用開發(fā)時獲得的支持相提并論。

          想要關(guān)于 Swift、Java、Kotlin、Cocoa 的文章、書籍、視頻和課程?隨便就能找到一大堆。

          需要在 Stack Overflow 上求助嗎?你想問的任何問題幾乎都已經(jīng)被問過并得到回答了。

          但是 Flutter 呢?就沒那么多了。

          從評論中可以看出這一點:

          單說支持問題就很讓人頭疼,尤其是在 Android 上(依賴地獄足以與 Windows 上 90 年代中期到 00 年代初的“DLL 地獄”相媲美)。

          Flutter 的前景并不明朗

          谷歌拋棄自己曾經(jīng)熱捧技術(shù)的歷史可謂臭名昭著,誰都沒法否認(rèn)這一點。而且,如果谷歌哪天認(rèn)為 Flutter 不會取得回報,那么棄之如敝屣也毫不奇怪。

          谷歌是在推廣 Flutter,但同時他們也在推廣 Kotlin 上的 Jetpack Compose,甚至 Kotlin Native Common 模塊,以提供跨平臺支持。

          更不用說蘋果也在推進(jìn)自己的下一代聲明式開發(fā)技術(shù):SwiftUI。盡管它和 Flutter 不能直接對比,因為它不能用來創(chuàng)建 Android 應(yīng)用,但是 SwiftUI 確實能讓開發(fā)人員一次性支持所有蘋果平臺:iOS、iPadOS、macOS、watchOS 和 tvOS。

          如果兩種技術(shù)都能達(dá)到預(yù)期的效果,并且都大大減少了開發(fā)原生應(yīng)用程序所需的時間,那么 Flutter 究竟還剩下什么優(yōu)勢可言呢?

          注意你的語言

          Flutter 的最大缺點之一是其實現(xiàn)語言 Dart。

          如果你在運行谷歌的 Web 或后端托管環(huán)境,那么 Dart 是你可以使用的一種語言,僅此而已。這意味著,如果你為了 Flutter 而花時間去學(xué)習(xí) Dart,那么很有可能那些來之不易的經(jīng)驗唯一能發(fā)揮價值的場所就是 Flutter。

          后一點可能是最讓人望而卻步的。我的意思是說,如果我想成為一名移動開發(fā)人員,我可能會學(xué)習(xí) Swift 或 Kotlin,因為它們都是現(xiàn)代語言,而且實際上兩者都有很多就業(yè)機(jī)會。

          Dart 呢?顯然沒那么多。

          嚴(yán)格來講 Dart 并不難學(xué),但這主要是因為它是一種簡單的語言。正如另一位評論者所指出的:

          學(xué)習(xí)了 Swift 和 Kotlin 之后,Dart 感覺像是在開倒車。它缺少許多其他現(xiàn)代語言可用的特性。它的類型系統(tǒng)不是很好。設(shè)計 Dart 的人似乎有一個“讓 JS 開發(fā)人員輕松使用”的設(shè)計目標(biāo)。Dart 的邊緣也很粗糙,就像 Javascript 一樣;而 Swift 和 Kotlin 在所有重要細(xì)節(jié)上都感覺很精致、成熟和完整。

          Dart 缺乏市場滲透力,這意味著如果你的團(tuán)隊中需要更多 Dart 開發(fā)人員,可能人都招不到。反過來說,這意味著你只能自己培養(yǎng)人才。這當(dāng)然可以做到,但在他們還沒成長起來之前你仍然要為他們開工資。

          最后請記住,在某個時候,你可能會遇到框架的局限性(或需要移植到更多平臺上),然后你無論如何都要退下來,并做一些原生開發(fā)的工作。

          在這種情況下,你仍然需要學(xué)習(xí) Swift 和 Kotlin。

          客戶不想要它

          作為可能的解決方案,我們曾幾次將 Flutter 推薦給客戶,而客戶一直反對這種想法——尤其是當(dāng)他們想利用自己內(nèi)部的 JavaScript 開發(fā)人員時,就像我前面提到的那樣。

          但請放心:他們也提到了我上面列出的幾乎所有問題。

          底線:Flutter 是一項邊緣技術(shù)

          上面談到的這些內(nèi)容可能會讓你相信,F(xiàn)lutter 可能不是你項目的最佳選擇。

          但我并不是這個意思。你只需要認(rèn)識到它的局限性即可。

          在我看來,F(xiàn)lutter 最適合小型內(nèi)部開發(fā)團(tuán)隊,這些團(tuán)隊需要快速創(chuàng)建概念驗證應(yīng)用,而這種應(yīng)用在外觀和設(shè)計上基本上都是非原生的。

          一個可能的例子是兒童游戲或應(yīng)用,它們有著獨特的界面,而且外觀上肯定不是原生的。在這種情況下,F(xiàn)lutter 并不能完全模仿 iOS 和 Android 體驗的問題就顯得無關(guān)緊要。我在上文提到的需要編寫兩次界面的問題也不復(fù)存在。

          哦,你還需要一個不介意學(xué)習(xí)全新平臺和語言的團(tuán)隊。

          那么……結(jié)論很明顯了。

          Flutter 是一項很酷的技術(shù),但在大多數(shù)情況下,它沒法成為舞臺上的主角。

          再說一遍,本文只是一種見解。歡迎不同意見,你可以在下面的評論中發(fā)表自己的意見。(實際上,其中一些要點已經(jīng)在文章中反饋了。)

          另請注意,我不是 React Native 的粉絲。React 遇到了許多相同的問題,此外還帶來了一些重大的性能損失。

          最后補(bǔ)充一下:我并不是說 Flutter 沒有合適的使用場景。但是,與已知領(lǐng)域中的其他事物一樣,它也存在一些折衷和已知的局限。最后你必須決定你和你的組織是否愿意給這種技術(shù)長期下注。

          感謝閱讀。

          延伸閱讀

          https://medium.com/better-programming/why-flutter-isnt-the-next-big-thing-e268488521f4




          這本《Flutter技術(shù)解析與實戰(zhàn)》并非基礎(chǔ)知識的簡單羅列,而是從一線問題出發(fā),循序漸進(jìn),娓娓道來。它從通用業(yè)務(wù)工程化開始,進(jìn)而展開Flutter在閑魚整體云端一體化架構(gòu)的創(chuàng)新思考。


          —— 阿里巴巴資深技術(shù)專家 孫兵(酒丐)


          長按二維碼秒關(guān)注

          回復(fù)”Flutter技術(shù)“ 獲取最新PDF

          長按二維碼2秒關(guān)注


          —?完?—


          前線推出學(xué)習(xí)交流群一定要備注:研究/工作方向+地點+學(xué)校/公司+昵稱(大前端+上海+上交+可可),根據(jù)格式備注,可更快被通過且邀請進(jìn)群

          掃碼加我微信進(jìn)群,內(nèi)推和技術(shù)交流,大佬們零距離



          END


          點個在看吧
          瀏覽 69
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  天天色综合zx | 成人精品无码四虎 | 亚洲无码小电影 | 日本在线视频www | 高清无码-熊猫成人网 |