誰告訴你 Flutter 會幹掉原生開發?

戀貓de小郭發表於2020-01-13

如下圖所示,今天剛好收到一個知乎問題,而剛剛好這個視訊我也在抖音上看到過,播放量還不低,本來是“一笑而過”但是既然這麼“有緣份”,那就關於 “Flutter 會幹掉原生開發?” 這個問題再聊聊我的看法。

誰告訴你 Flutter 會幹掉原生開發?

我在 2017 開始對 flutter 產生興趣,至今已經寫了 20 幾篇關於 flutter 文章,github 的幾個 flutter 開源專案 star 數大概在 14k 左右,如今 flutter 也是我的本質工作之一,所以我想說這個觀點很偏面很偏激也很博眼球

在說這個問題之前,先說下 flutter 是什麼。

flutter 其實就是一套谷歌開源的跨平臺 UI 開發框架,支援 Android 和 iOS ,並且目前開始支援 Web 和 MacOS,未來還會繼續支援 Win和 Linux 平臺的一套 UI 框架。

和以前的跨平臺開發不同的是:它的效能更好,更接近原生並且跨平臺體驗更優秀,因為它的跨平臺實現機制更像是遊戲引擎,所以在積累到 2019 年後迅猛上位,到今天 flutter 在 github 的 star 已經超過了前輩 react-native,當然, issue 也超越了 react-native。

誰告訴你 Flutter 會幹掉原生開發?

所以通過上述可以總結:flutter 確實很不錯,但是, flutter 的定位只是跨平臺 UI 框架,並且 flutter 目前的 issue 感人。

關於 Flutter “幹掉原生開發的問題”

這個問題其實追溯到 react-native 、weex 等跨平臺框架出現的時候,都會有原生開發“要涼”的口號盛行,但是事實上 react-native 、weex 和 flutter 都只是 UI 框架,它解決的其實是跨平臺上的 UI 實現,讓介面佈局或者實現的業務邏輯可以在多端統一。

但是它也僅僅只是 UI 框架,比如 react-native 本身就是依賴於原生控制元件,而 flutter 的 webview 、mapview 也都需要依賴原生開發來支撐。

接著說除了 UI 框架之外,比如藍芽、資料儲存、感測器、應用之間的通訊互動、多程式等等一大堆支援其實都屬於原生平臺,這些在 flutter 上都需要對應平臺的開發支援,之後再封裝到 flutter 外掛中。

有的人可能覺得這些都有官方和第三方提供,但是首先 flutter 的外掛社群如今還比較年輕,當然專案小的時候可能無所謂,但是隻要專案稍微比較大的,這些肯定遠遠不夠,官方提供的永遠趕不上 PM 或者 Boss 們的奇思妙想

如果按照截圖上所說,他一個人能做 iOS、Android 和 Flutter 所有的工作,能做程式設計界的“葉問”,那我無話可說。。。

再說就flutter 的 issue ,天見尤憐,加上 pr 還有 8000+ 的 issue 沒有 Closed ,心疼 flutter 官方一秒鐘。跨平臺框架的問題一直都不可能少,因為涉及的平臺多了,問題自然也就多了,而很多問題其實都是和原有的平臺有關,沒有對應平臺的開發人員很多時候是搞不清問題所在。

誰告訴你 Flutter 會幹掉原生開發?

混合開發也是一個考慮的因素,因為很多企業並不是從零開始,一般都是在原有專案的基礎上做混合開發,對某些業務進行改造成 flutter 來嘗試新技術;同時大廠也不會把雞蛋放在一個籠子裡,所以很多時候對於大廠而言更多會是混合開發的模式。

最後就是打包和分發,“打包失敗和稽核不過”是最常出現問題的階段,特別是 iOS 平臺的打包和稽核,這些往往也都需要有對應平臺經驗的人來處理。

所以 flutter 的定位,甚至跨平臺開發的定位,都不是幹掉原生,而是在原生開發上擴充技能和能力。能幹掉平臺的只有平臺!

關於 Flutter 真正的定位

最後聊聊 flutter 的定位,flutter 作為跨平臺 UI 框架,很眾多跨平臺框架一樣,它是和原生相輔相成的存在,我在做技術分享和文章中不止一次表達過這個觀點,跨平臺解決的問題是:

1、開發成本

直接學 Java/KotlinObject-C/SwiftJavaScript/CSS 去寫各平臺的程式碼可以嗎?

當然可以,這樣的效能肯定最有保證,但是跨平臺的主要優勢在於程式碼邏輯的複用,減少各平臺同一邏輯,因人而異的開發成本。對於企業而言,一套業務邏輯可以在多處使用是最理想也是最保險的。

2、學習機會

一般情況下,各平臺開發者容易侷限在自己的領域開發,而作為應用開發者,跨平臺是接觸另一平臺或領域的過渡機會。

3、團隊結構

一般而言做跨平臺的團隊還是會有 Android 和 iOS 的原生開發,甚至於在大中型專案中人數都不會變少,但是用跨平臺會讓所有人都參與都一個開發進度中,而不是 iOS 和 Android 各做各的,最後再扯誰的實現有問題。

每次出現新的技術框架都有猛吹的,也有抗拒的,希望大家都能保持客觀的態度面對改變~

資源推薦

開源 Flutter 完整專案:github.com/CarGuo/GSYG…

開源 Flutter 多案例學習型專案: github.com/CarGuo/GSYF…

開源 Fluttre 實戰電子書專案:github.com/CarGuo/GSYF…

誰告訴你 Flutter 會幹掉原生開發?

相關文章