<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 不是真正的跨平臺框架

          共 3000字,需瀏覽 6分鐘

           ·

          2021-03-22 14:20

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

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

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

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


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


          以下為譯文:

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

          由于我選擇了這個相當(dāng)大膽的標(biāo)題,為了避免誤會,我要對其進(jìn)行詳細(xì)的解釋。從技術(shù)角度來講,F(xiàn)lutter 的確是一個跨平臺的框架。

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

          從 Flutter 2.0 發(fā)布以來,我就察覺到它被炒的有點(diǎn)過了。請不要誤會,我并不是要否定它,其實(shí)我也是 Flutter 的粉絲,亦將一如既往的擁護(hù)它。

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

          1、六大平臺

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

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

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

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

          接下來,我們重新回到 Flutter 這個話題:

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

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

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

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

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

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

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

          對,這是一個好問題!

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

          3、針對不同平臺要編寫多個應(yīng)用程序

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

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

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

          4、為什么 Flutter 不是一個跨平臺的框架

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

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

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

          5、結(jié)尾

          全文都在討論跨平臺相關(guān)話題,或許你會持有不同意見,如果你喜歡本文,歡迎點(diǎn)贊評論和我交流。

          如果你錯過了今年最大的 Flutter 會議,對我聊的內(nèi)容不知所云,可以在 Youtube 上觀看此視頻https://www.youtube.com/watch?v=yll3SNXvQCw 來深入了解相關(guān)內(nèi)容。


          大廠面試題領(lǐng)取方式:
          加下面助理的微信一定要備注(大廠面試):
          研究/工作方向+地點(diǎn)+學(xué)校/公司+昵稱
          (如Java+上海+上交+可可)
          根據(jù)格式備注,可更快被通過且邀請進(jìn)群,領(lǐng)取一份專屬學(xué)習(xí)禮包


          END


          好文點(diǎn)個在看吧!
          瀏覽 43
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(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>
                  麻豆回家一区二区 | 黑人下面太大我高潮了 | 亚洲成人网站视频 | 青娱乐国产在线播放 | 欧美伦理一区二区 |