Flutter 與 Compose 應(yīng)該怎么選擇绽左?它們沖突嗎悼嫉?

沒(méi)用的前言

其實(shí)自從 Jetpack Compose 面世以來(lái),關(guān)于 Flutter 與 Compose 之間的選擇問(wèn)題就開(kāi)始在 Android 開(kāi)發(fā)中出現(xiàn)拼窥,就如同之前有 iOSer 糾結(jié)在 Flutter 和 SwiftUI 之間選誰(shuí)一樣戏蔑,對(duì)于 Android 開(kāi)發(fā)來(lái)說(shuō)似乎“更頭痛”的是 Flutter 與 Compose “同出一爹”

image

本來(lái)關(guān)于這個(gè)話(huà)題沒(méi)什么好寫(xiě)的鲁纠,因?yàn)檫@個(gè)話(huà)題屬于“吃力不討好”的類(lèi)型 总棵,畢竟被原生開(kāi)發(fā)看到了,可能就有人就要痛批我:

“是我 Andorid 提不動(dòng)刀了改含,還是這些一兩年的’小框架‘飄了情龄,搞不好我們?cè)俚鹊人鼈兙投紱隽耍阏炀椭馈溬u(mài)焦慮’收割流量捍壤≈枋樱”

但是看你們討論得熱火朝天,加之時(shí)不時(shí)要回答類(lèi)似的問(wèn)題鹃觉,實(shí)在憋不住了专酗,所以最終還是選擇“冒死”輸出一波,從我的觀點(diǎn)來(lái)介紹它們之間的關(guān)系和如何選擇帜慢。

image

當(dāng)然笼裳,有人說(shuō)我都不選不行嗎?當(dāng)然可以粱玲,因?yàn)樵谀壳半A段 Flutter 和 Compose 都不影響你的 Android 開(kāi)發(fā)地位躬柬,它們最多只是屬于競(jìng)爭(zhēng)工具。

Flutter 和 Compose 初衷

Flutter 和 Compose 的未來(lái)目標(biāo)會(huì)比較一致抽减,但是至少它們出現(xiàn)的初衷是不一樣允青。

首先 Compose 是 Jetpack 系列的全新 UI 庫(kù),理解下這點(diǎn)卵沉!Compose 是 Jetpack 系列的成員之一颠锉,所以可以被應(yīng)用到 Android 界面開(kāi)發(fā)中法牲,所以你也可以選擇不用,用不用都能開(kāi)發(fā) Android 的 UI 琼掠。

然后再說(shuō) Compose 出生的目的:就是為了重新定義 Android 上 UI 的編寫(xiě)方式拒垃,為了提高 Android 原生的 UI 開(kāi)發(fā)效率,讓 Android 的 UI 開(kāi)發(fā)方式能跟上時(shí)代的步伐瓷蛙。

不管你喜不喜歡悼瓮,聲明式的界面開(kāi)發(fā)就是如今的潮流,不管是 React 艰猬、SwiftUI 横堡、Flutter 等都在表明這一點(diǎn)。

而對(duì)于 Flutter 而言就是跨平臺(tái)冠桃,因?yàn)?Flutter 沒(méi)有自己的平臺(tái) 命贴,有人說(shuō) Fuchsia 會(huì)是 Flutter 的家,但那已經(jīng)屬于后話(huà)食听,畢竟 Fuchsia 要先能養(yǎng)活自己胸蛛。

因?yàn)?Flutter 出生就是為了跨平臺(tái)存在的全新 UI 框架,從底層到上層都是“創(chuàng)新”和“大膽”的設(shè)計(jì)碳蛋,就選擇 Dart 本身就是一項(xiàng)很“大膽”的決定胚泌,甚至在 Web 平臺(tái)都敢支持選用 CanvaskitWebAssembly 模式。

所以 Flutter 的“任性”從一出來(lái)就不被看好肃弟,當(dāng)然至今也有不看好它的人,因?yàn)樗撤N程度很“偏激”和不友好零蓉。

所以扯了那么多笤受,總結(jié)下就是:

  • Compose 是 Android UI 的未來(lái),現(xiàn)階段你可以不會(huì)敌蜂,但是如果未來(lái)你會(huì)繼續(xù)在 Android 平臺(tái)的話(huà)箩兽,你就必須會(huì)。

  • Flutter 的未來(lái)在于多平臺(tái)章喉,更穩(wěn)定可靠的多平臺(tái) UI 框架汗贫。如果你的路線方向不是大前端或者多端開(kāi)發(fā)者,那你不需要會(huì)秸脱。

對(duì)了落包,鴻蒙上也是有類(lèi)似 Flutter 的實(shí)現(xiàn),感興趣的可以自己關(guān)注下摊唇。

image

Compose 和 Flutter 未來(lái)一致

雖然 Compose 和 Flutter 初始服務(wù)的對(duì)象并不一致咐蝇,但是它們未來(lái)目標(biāo)肯定是一致。

為什么這么說(shuō)巷查?《Jetpack Compose for Desktop: 里程碑1發(fā)布》 不就表明了這一態(tài)度么有序? Compose 雖然只是作為 Jetpack 的一個(gè) UI 子集抹腿,但是它設(shè)計(jì)的理念和架構(gòu)本身就帶有跨平臺(tái)支持的潛力

本質(zhì)是 Compose 也是類(lèi)似于一個(gè)編譯器加上一個(gè) Skia 的工作模式旭寿,這和 Flutter 沒(méi)有什么區(qū)別警绩,不說(shuō)開(kāi)發(fā)方式,僅從控件命名上 Flutter 和 Compose 就不會(huì)讓你感覺(jué)陌生盅称。

image

不說(shuō)控件房蝉,就說(shuō)這次 Flutter 2.0 更新中 Dart 1.12 的 null-safety 和 Kotlin 像不像?

所以回歸到主題的另外一個(gè)問(wèn)題微渠, Flutter 和 Compose 沖突嗎搭幻?

從立項(xiàng)的意義上看 Flutter 和 Compose 好像是沖突的,但是從使用者的角度看逞盆,它們并不沖突檀蹋。

因?yàn)閷?duì)于開(kāi)發(fā)者而言,不管你是先學(xué)會(huì) Compose 還是先學(xué)會(huì) Flutter云芦,對(duì)于你掌握另外一項(xiàng)技能都有幫助俯逾,相當(dāng)于學(xué)會(huì)一種就等于學(xué)會(huì)另一種的 70%

從未來(lái)的角度看:

  • 如果你是原生開(kāi)發(fā),還沒(méi)接觸過(guò) Flutter 舅逸, 那先去學(xué) Compose 桌肴,這對(duì)你的 Android 生涯更有幫助,然后再學(xué) Flutter 也不難琉历。

  • 如果你已經(jīng)在使用或者學(xué)習(xí) Flutter 坠七,那么請(qǐng)繼續(xù)深造,不必因?yàn)閾?dān)心 Compose 而停滯不前旗笔,當(dāng)你掌握了 Flutter 后其實(shí)離 Compose 也不遠(yuǎn)了彪置。

它們二者的未來(lái)都會(huì)是多平臺(tái),而我認(rèn)為的沖突主要是在于動(dòng)手學(xué)起來(lái)蝇恶,而不是在二者之間徘徊糾結(jié)拳魁。

從現(xiàn)實(shí)角度出發(fā):目前 Flutter 2.0 下的 Android 和 iOS 已經(jīng)趨向穩(wěn)定,Web 已經(jīng)進(jìn)入 Stable 分支撮弧,而 Macos/Linux/Win 也進(jìn)入了 Beta 階段潘懊,并且可以在 Stable 分支通過(guò) snapshot 預(yù)覽。所以從這個(gè)階段考慮贿衍,如果你需要跨平臺(tái)開(kāi)發(fā)授舟,甚至 PC 平臺(tái),那么優(yōu)先考慮 Flutter 吧舌厨。

你選擇 React Native 也沒(méi)問(wèn)題岂却,說(shuō)起來(lái)最近 React Native 的版本號(hào)已經(jīng)到了 0.64 了??

當(dāng)然大家可能會(huì)關(guān)心框架是否有坑的問(wèn)題,本質(zhì)上所有框架都有坑,甚至網(wǎng)絡(luò)因素都可能會(huì)成為你的痛點(diǎn)躏哩,問(wèn)題在于你是否接受這些坑署浩。

跨平臺(tái)的背后本身就是“臟活”和“累活”, Flutter 的全平臺(tái)之路很艱難扫尺,就像之前寫(xiě)的《解讀 Flutter 全平臺(tái)開(kāi)發(fā)的誤解與偏見(jiàn)》筋栋, 現(xiàn)階段 Flutter 全平臺(tái)更多只是噱頭,只是提供了“多一種可能”的階段正驻。

最后還是要例行補(bǔ)充這一點(diǎn):

跨平臺(tái)之所以是跨平臺(tái)弊攘,首先就是要有對(duì)應(yīng)原生平臺(tái)的存在, 很多原生平臺(tái)的問(wèn)題都需要回歸到平臺(tái)去解決姑曙,那些喜歡吹 xxx 制霸原生要涼的節(jié)奏襟交,僅僅是因?yàn)椤澳愕慕箲]會(huì)成為它們的利潤(rùn)”。

聊點(diǎn)廢話(huà)

說(shuō)點(diǎn)“道理我都懂”的實(shí)話(huà)伤靠,本質(zhì)是我們作為開(kāi)發(fā)者捣域,其實(shí)并不應(yīng)該把自己歸納為于某種語(yǔ)言和特定的框架之下,我們現(xiàn)在被歸納在某個(gè)領(lǐng)域僅僅是因?yàn)楣ぷ餍枰绾希鴮?duì)于未來(lái)我們的發(fā)展焕梅,其實(shí)更應(yīng)該注重的是編程基礎(chǔ)和動(dòng)手能力。

我本身是通過(guò) Weex 接觸的 Vue 卦洽,也用過(guò) uni-app 做個(gè)簡(jiǎn)單的小程序贞言,用 React Native 開(kāi)發(fā)過(guò)兩端 App ,也用 Flutter 寫(xiě)過(guò) Web 阀蒂,甚至手賤地在 SpringBoot 上用 Kotlin 寫(xiě) API该窗。

所以在我眼中,現(xiàn)在客戶(hù)端和前端之間的劃分已經(jīng)越來(lái)越模糊脂新,我遇到不少 Android 開(kāi)發(fā)寫(xiě)過(guò)小程序或者 Vue 挪捕,不少前端也通過(guò) uni-app, RN 和 Flutter 在寫(xiě) App 争便,這是很正常的趨勢(shì),因?yàn)槠脚_(tái)成熟了断医,越成熟的平臺(tái)就會(huì)開(kāi)始和相近的領(lǐng)域融合貫通滞乙。

你想說(shuō)“卷”也行,這種趨勢(shì)會(huì)讓一些簡(jiǎn)單鉴嗤、重復(fù)或者需要共享的內(nèi)容通過(guò)跨平臺(tái)來(lái)得到落地斩启,我相信有的人不看好跨平臺(tái),但是它存在的場(chǎng)景確實(shí)有它關(guān)鍵的價(jià)值醉锅。

也許某些領(lǐng)域我的認(rèn)識(shí)不是很深兔簇,但是在需要的時(shí)候我可以動(dòng)手滿(mǎn)足需求,甚至去深入探索一下垄琐,而我也有自己精通的領(lǐng)域,二次并不沖突。

當(dāng)然你說(shuō)我只想在某個(gè)平臺(tái)深入研究有沒(méi)有問(wèn)題?那肯定沒(méi)有問(wèn)題,這是好事,因?yàn)榫硞€(gè)領(lǐng)域本來(lái)就是非常好的一件事

但是到涂!對(duì)沉御,我還是要說(shuō)這個(gè)但是,因?yàn)楹芏鄷r(shí)候精通某項(xiàng)技術(shù),是需要業(yè)務(wù)場(chǎng)景去驗(yàn)證和推進(jìn)的嘶窄,如果不是大體量的業(yè)務(wù)場(chǎng)景,沒(méi)有經(jīng)歷過(guò)各種極端的考驗(yàn),很多時(shí)候所謂的精通只是表層精通。

為什么說(shuō)這個(gè)哟旗?因?yàn)樵诮涣鬟^(guò)程中經(jīng)常有一些人說(shuō):想要深入xxx去精通某項(xiàng)技術(shù)或者領(lǐng)域贩据,但是最終還是“三過(guò)門(mén)而不入”。

最后的最后闸餐,我想說(shuō)學(xué)習(xí)其實(shí)本身是一件長(zhǎng)期投資的事情饱亮,我們追求“性?xún)r(jià)比”和“高回報(bào)”很正常,但是這和投資金融一樣舍沙,如果一直想要通過(guò)“投機(jī)”來(lái)獲利近上,那就要有做好韭菜的準(zhǔn)備。

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拂铡,一起剝皮案震驚了整個(gè)濱河市壹无,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌感帅,老刑警劉巖斗锭,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異失球,居然都是意外死亡岖是,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)实苞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)璧微,“玉大人,你說(shuō)我怎么就攤上這事硬梁。” “怎么了胞得?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵荧止,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)跃巡,這世上最難降的妖魔是什么危号? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮素邪,結(jié)果婚禮上外莲,老公的妹妹穿的比我還像新娘。我一直安慰自己兔朦,他們只是感情好偷线,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著沽甥,像睡著了一般声邦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上摆舟,一...
    開(kāi)封第一講書(shū)人閱讀 51,562評(píng)論 1 305
  • 那天亥曹,我揣著相機(jī)與錄音,去河邊找鬼恨诱。 笑死媳瞪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的照宝。 我是一名探鬼主播蛇受,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼硫豆!你這毒婦竟也來(lái)了龙巨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤熊响,失蹤者是張志新(化名)和其女友劉穎旨别,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體汗茄,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秸弛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了洪碳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片递览。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖瞳腌,靈堂內(nèi)的尸體忽然破棺而出绞铃,到底是詐尸還是另有隱情,我是刑警寧澤嫂侍,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布儿捧,位于F島的核電站荚坞,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏菲盾。R本人自食惡果不足惜颓影,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望懒鉴。 院中可真熱鬧诡挂,春花似錦、人聲如沸临谱。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)吴裤。三九已至旧找,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間麦牺,已是汗流浹背钮蛛。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留剖膳,地道東北人魏颓。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像吱晒,于是被迫代替她去往敵國(guó)和親甸饱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容