以下圖所示,今天恰好收到一個知乎問題,而剛恰好這個視頻我也在抖音上看到過,播放量還不低,原本是「一笑而過」可是既然這麼「有緣份」,那就關於 「Flutter 會幹掉原生開發?」 這個問題再聊聊個人見解。react
我在 2017 開始對 flutter 產生興趣,至今已經寫了 20 幾篇關於 flutter 文章,github 的幾個 flutter 開源項目 star 數大概在 14k 左右,現在 flutter 也是個人本質工做之一,因此我想說這個觀點很偏面很偏激也很博眼球。git
flutter 其實就是一套谷歌開源的跨平臺 UI 開發框架,支持 Android 和 iOS ,而且目前開始支持 Web 和 MacOS,將來還會繼續支持 Win和 Linux 平臺的一套 UI 框架。github
和之前的跨平臺開發不一樣的是:它的性能更好,更接近原生而且跨平臺體驗更優秀,由於它的跨平臺實現機制更像是遊戲引擎,因此在積累到 2019 年後迅猛上位,到今天 flutter 在 github 的 star 已經超過了前輩 react-native,固然, issue 也超越了 react-native。web
因此經過上述能夠總結:flutter 確實很不錯,可是, flutter 的定位只是跨平臺 UI 框架,而且 flutter 目前的 issue 感人。編程
這個問題其實追溯到 react-native 、weex 等跨平臺框架出現的時候,都會有原生開發「要涼」的口號盛行,可是事實上 react-native 、weex 和 flutter 都只是 UI 框架,它解決的實際上是跨平臺上的 UI 實現,讓界面佈局或者實現的業務邏輯能夠在多端統一。react-native
可是它也僅僅只是 UI 框架,好比 react-native 自己就是依賴於原生控件,而 flutter 的 webview 、mapview 也都須要依賴原生開發來支撐。weex
接着說除了 UI 框架以外,好比藍牙、數據存儲、傳感器、應用之間的通訊交互、多進程等等一大堆支持其實都屬於原平生臺,這些在 flutter 上都須要對應平臺的開發支持,以後再封裝到 flutter 插件中。框架
有的人可能以爲這些都有官方和第三方提供,可是首先 flutter 的插件社區現在還比較年輕,固然項目小的時候可能無所謂,可是隻要項目稍微比較大的,這些確定遠遠不夠,官方提供的永遠趕不上 PM 或者 Boss 們的奇思妙想。佈局
若是按照截圖上所說,他一我的能作 iOS、Android 和 Flutter 全部的工做,能作編程界的「葉問」,那我無話可說。。。性能
再說就flutter 的 issue ,天見尤憐,加上 pr 還有 8000+ 的 issue 沒有 Closed ,心疼 flutter 官方一秒鐘。跨平臺框架的問題一直都不可能少,由於涉及的平臺多了,問題天然也就多了,而不少問題其實都是和原有的平臺有關,沒有對應平臺的開發人員不少時候是搞不清問題所在。
混合開發也是一個考慮的因素,由於不少企業並非從零開始,通常都是在原有項目的基礎上作混合開發,對某些業務進行改形成 flutter 來嘗試新技術;同時大廠也不會把雞蛋放在一個籠子裏,因此不少時候對於大廠而言更多會是混合開發的模式。
最後就是打包和分發,「打包失敗和審覈不過」是最常出現問題的階段,特別是 iOS 平臺的打包和審覈,這些每每也都須要有對應平臺經驗的人來處理。
因此 flutter 的定位,甚至跨平臺開發的定位,都不是幹掉原生,而是在原生開發上拓展技能和能力。能幹掉平臺的只有平臺!
最後聊聊 flutter 的定位,flutter 做爲跨平臺 UI 框架,很衆多跨平臺框架同樣,它是和原生相輔相成的存在,我在作技術分享和文章中不止一次表達過這個觀點,跨平臺解決的問題是:
一、開發成本
直接學 Java
/Kotlin
、Object-C
/Swift
、JavaScript
/CSS
去寫各平臺的代碼能夠嗎?
固然能夠,這樣的性能確定最有保證,可是跨平臺的主要優點在於代碼邏輯的複用,減小各平臺同一邏輯,因人而異的開發成本。對於企業而言,一套業務邏輯能夠在多處使用是最理想也是最保險的。
二、學習機會
通常狀況下,各平臺開發者容易侷限在本身的領域開發,而做爲應用開發者,跨平臺是接觸另外一平臺或領域的過渡機會。
三、團隊結構
通常而言作跨平臺的團隊仍是會有 Android 和 iOS 的原生開發,甚至於在大中型項目中人數都不會變少,可是用跨平臺會讓全部人都參與都一個開發進度中,而不是 iOS 和 Android 各作各的,最後再扯誰的實現有問題。
每次出現新的技術框架都有猛吹的,也有抗拒的,但願你們都能保持客觀的態度面對改變~
開源 Flutter 完整項目:github.com/CarGuo/GSYG…
開源 Flutter 多案例學習型項目: github.com/CarGuo/GSYF…
開源 Fluttre 實戰電子書項目:github.com/CarGuo/GSYF…