<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 毀了客戶端和 Web 開發(fā)!

          共 2961字,需瀏覽 6分鐘

           ·

          2021-10-13 13:38


          轉(zhuǎn)自:英文:Luke Urban,翻譯:CSDN

          原文鏈接:https://itnext.io/flutter-is-no-longer-a-cross-platform-framework-b53c87b14c39


          Google 重磅發(fā)布了專為 Web、移動(dòng)和桌面而構(gòu)建的 Flutter 2.0!將 Flutter 從移動(dòng)開發(fā)框架擴(kuò)展成可移植框架,因而開發(fā)者無(wú)需重寫代碼即可將應(yīng)用擴(kuò)展至桌面或網(wǎng)頁(yè)。看似為了幫助Web和移動(dòng)開發(fā)者,實(shí)際上不然,而本文作者認(rèn)為,現(xiàn)在不應(yīng)該再去想創(chuàng)建一個(gè)需要部署到所有平臺(tái)的應(yīng)用程序,Flutter反而毀了Web和移動(dòng)開發(fā)。


          以下為譯文:

          大家好,我是一名軟件開發(fā)人員,我叫 Luke。


          由于我選擇了這個(gè)相當(dāng)大膽的標(biāo)題,為了避免誤會(huì),我要對(duì)其進(jìn)行詳細(xì)的解釋。從技術(shù)角度來(lái)講,F(xiàn)lutter 的確是一個(gè)跨平臺(tái)的框架。也不止其,所有跨斷技術(shù)都是非常糟糕的設(shè)計(jì)。


          但是,我有點(diǎn)不同的看法。


          從 Flutter 2.0 發(fā)布以來(lái),我就察覺到它被炒的有點(diǎn)過了。不應(yīng)該再去想創(chuàng)建一個(gè)需要部署到所有平臺(tái)的應(yīng)用程序,Flutter反而毀了Web和移動(dòng)開發(fā)。


          請(qǐng)不要誤會(huì),我并不是要否定它,其實(shí)我也是 Flutter 的粉絲,亦將一如既往的擁護(hù)它。


          我在日常工作中經(jīng)常使用 Flutter 來(lái)開發(fā) iOS 和 Android 應(yīng)用程序。由于早前我是用 Kotlin 或者 Swift 來(lái)開發(fā)原生的應(yīng)用,支持多種特性,如:掃描 / 頁(yè)面識(shí)別、pin/biometric 應(yīng)用程序認(rèn)證、通知、firebase 統(tǒng)計(jì)和一些高級(jí)的用戶流,現(xiàn)在用 Flutter 來(lái)開發(fā)應(yīng)用,我對(duì) Flutter 的優(yōu)缺點(diǎn)的了解更加透徹。


          1、六大平臺(tái)


          通過今年的 Flutter Engage 會(huì)議我們可知已經(jīng)可以使用 Flutter 在 iOS、 Android、 Mac、 Windows、 Linux 和 Web 這六個(gè)平臺(tái)中的任何一個(gè)平臺(tái)上開發(fā)應(yīng)用。這太棒了!但事情遠(yuǎn)沒有這么簡(jiǎn)單...你的確可以在這 6 個(gè)平臺(tái)上部署你的應(yīng)用程序,但是說實(shí)話,我很少這么做。我很難想象一個(gè)人會(huì)在不同的平臺(tái)上部署同一個(gè)應(yīng)用程序,我認(rèn)為應(yīng)該根據(jù)不同的平臺(tái)特點(diǎn)使用不同的設(shè)計(jì)模式。在大型設(shè)備上使用底部彈窗、應(yīng)用程序條、簡(jiǎn)潔的列表就很別扭。一般來(lái)說,適合在移動(dòng)設(shè)備上的組件和設(shè)計(jì)模式在桌面設(shè)備上卻不合時(shí)宜,反之亦然。

          我的一個(gè)非常好的朋友 Filip Hracek 在 Flutter Engage 演講中提到“神奇的設(shè)計(jì)開發(fā)者”的相關(guān)話題,我非常贊同他的看法。我認(rèn)為需要有更多的開發(fā)者真正知道他們正在做的是什么,而且不是盲目地跟從迭代面板。


          *Scrum Sprint*?是一個(gè)可重復(fù)的固定時(shí)間框,在這個(gè)時(shí)間框內(nèi)創(chuàng)造一個(gè)高價(jià)值的產(chǎn)品。-- 維基百科


          強(qiáng)烈推薦大家觀看 Filip 在 Youtube 上的相關(guān)視頻片段https://www.youtube.com/watch?v=MIepaf7ks40。


          接下來(lái),我們重新回到 Flutter 這個(gè)話題:


          2、不應(yīng)該再去想創(chuàng)建一個(gè)需要部署到所有平臺(tái)的應(yīng)用程序

          你更應(yīng)該去想如何將你要編寫的應(yīng)用程序模塊化,以便在未來(lái)更好地復(fù)用這些模塊。給你們舉個(gè)例子:在我的公司,我們正在開發(fā)專注于用戶數(shù)據(jù)的應(yīng)用程序。


          這就需要?jiǎng)?chuàng)建自定義和高級(jí)的調(diào)查報(bào)告,我們不希望每次添加新問題時(shí)都要編寫新的窗口小部件。我們的做法是:編寫一個(gè)包含所有可能的調(diào)查邏輯的模塊,在許多其他項(xiàng)目中復(fù)用它(而不需要每次都重寫一遍相似的代碼)

          我給你舉上面這個(gè)例子的目的是提醒你在構(gòu)建一個(gè)應(yīng)用程序時(shí),你更應(yīng)該著重思考你要做的應(yīng)用程序或整個(gè)業(yè)務(wù)的重點(diǎn)是什么。更應(yīng)該去重點(diǎn)思考,它背后的業(yè)務(wù)邏輯是什么?


          在計(jì)算機(jī)軟件中,業(yè)務(wù)邏輯或領(lǐng)域建模也是程序的一部分,它對(duì)真實(shí)世界的業(yè)務(wù)規(guī)則進(jìn)行編碼,確定如何創(chuàng)建、存儲(chǔ)和修改數(shù)據(jù)。

          當(dāng)你明確了領(lǐng)域劃分,你可以將一個(gè)領(lǐng)域封裝成獨(dú)立的模塊,你可以將該模塊在需要開發(fā)的 Flutter 應(yīng)用程序中復(fù)用。


          但 Luke,這有什么好大驚小怪的嗎?


          對(duì),這是一個(gè)好問題!


          對(duì)于相同的業(yè)務(wù)邏輯,你可以用不同的用戶流來(lái)創(chuàng)建多個(gè) Flutter 應(yīng)用。你可以將要開發(fā)的 Flutter 應(yīng)用進(jìn)行分類(如:移動(dòng)應(yīng)用、桌面應(yīng)用和 Web應(yīng)用),這將能幫助關(guān)注到不同平臺(tái)的差異,對(duì)特定平臺(tái)進(jìn)行特定處理最終將獲得更好的用戶體驗(yàn)。


          3、針對(duì)不同平臺(tái)要編寫多個(gè)應(yīng)用程序


          雖然 Flutter 還算是一個(gè)相對(duì)比較新的技術(shù),還主要針對(duì)小公司和個(gè)人開發(fā)者,但這不妨礙它成為一個(gè)人人皆可用的偉大工具。


          我參與開發(fā)過多個(gè)企業(yè)級(jí)應(yīng)用程序。根據(jù)我的經(jīng)驗(yàn),系統(tǒng)的每個(gè)部分都需要有一個(gè)清晰的工作流程。開發(fā)一個(gè)系統(tǒng)通常需要前端、后端等。為了節(jié)約成本,編寫一個(gè)應(yīng)用程序,在不同的平臺(tái)運(yùn)行也越發(fā)流行。為了實(shí)現(xiàn)這個(gè)目的,你需要雇一個(gè)團(tuán)隊(duì)進(jìn)行專門開發(fā)。你敢想象,十幾個(gè)人的團(tuán)隊(duì)開發(fā)同一套代碼來(lái)實(shí)現(xiàn)所有平臺(tái)的特性嗎?這簡(jiǎn)直是管理層的噩夢(mèng)。很可能出現(xiàn):一部分開發(fā)人員開發(fā)的桌面特性與移動(dòng)團(tuán)隊(duì)正在開發(fā)的特性相沖突的情況。


          其次,應(yīng)用程序包也會(huì)越來(lái)越臃腫,然而很多時(shí)候并不是每個(gè)平臺(tái)都需要有一份軟件包。現(xiàn)在,正值 Flutter 2.0 發(fā)布的時(shí)候,由于我并沒有將所有的包都進(jìn)行升級(jí),還不支持 null 安全還需要手動(dòng)解決依賴沖突的問題。


          4、為什么 Flutter 不是一個(gè)跨平臺(tái)的框架

          在讀了這篇文章之后,或許你能夠理解為什么我會(huì)認(rèn)為 Flutter 不是一個(gè)真正的跨平臺(tái)框架。Flutter 是一個(gè)為我們提供了為每個(gè)平臺(tái)構(gòu)建應(yīng)用程序所需的功能的工具。我認(rèn)為,真正實(shí)現(xiàn)跨平臺(tái)不應(yīng)該只開發(fā)一個(gè)應(yīng)用程序,更應(yīng)該開發(fā)一組由相同的業(yè)務(wù)邏輯驅(qū)動(dòng)的應(yīng)用程序集合。

          此外,當(dāng)我們編寫 Flutter 應(yīng)用程序時(shí),我們并沒有跨越任何平臺(tái)。我們這種所謂的跨平臺(tái),不過是用 Xamarin 或其他工具將寫好的代碼翻譯成原生元素。


          如果非要把 Flutter 和其他東西進(jìn)行類比的話,那么與之相似的就是游戲引擎(如 Unity)。我們不需要專門在 Windows 或者 Mac 系統(tǒng)上開發(fā)對(duì)應(yīng)平臺(tái)的游戲。我們可以使用 Unity 編寫,然后將其導(dǎo)出到一個(gè)特定的平臺(tái)。使用 Unity 編寫一個(gè)游戲然后導(dǎo)出到多個(gè)平臺(tái)和真正的跨平臺(tái)完全也是兩碼事。


          因?yàn)槊總€(gè)項(xiàng)目都有技術(shù)債務(wù),你應(yīng)該停止抱怨,并開始重構(gòu)。每次開發(fā)新功能之前都應(yīng)該進(jìn)行小型代碼重構(gòu)。但接入?Flutter?大規(guī)模的重構(gòu)和重寫永遠(yuǎn)不會(huì)有好結(jié)果。
          5、結(jié)尾

          全文都在討論跨平臺(tái)相關(guān)話題, ??以上就是我認(rèn)為 flutter 毀了 Web 開發(fā)的原因。很多人對(duì)這一說法很感興趣,并熱切地加入了辯論。如果你認(rèn)為?flutter?并沒有那么糟糕,或許你會(huì)持有不同意見,如果你喜歡本文,歡迎點(diǎn)贊評(píng)論和我交流。




          PS:如果覺得我的分享不錯(cuò),歡迎大家隨手點(diǎn)贊、轉(zhuǎn)發(fā)、在看。

          PS:歡迎在留言區(qū)留下你的觀點(diǎn),一起討論提高。如果今天的文章讓你有新的啟發(fā),歡迎轉(zhuǎn)發(fā)分享給更多人。

          瀏覽 33
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  91麻豆精品在线 | 国产午夜精品久久久久 | 无码中文字幕在线观看 | 啪啪网网站 | 尻屄视频在线播放 |