Flutter的趨勢

  • 在移動端,受成本和效率的驅使,跨平臺一站式開發慢慢成為一個趨勢。從Hybird,RN,WEEX,Flutter,到各種小程序或快應用的大量湧現,雖然很多跨平臺方案都有各自的優缺點,目前還沒有完美無缺的終極方案,但這已是未來移動端開發不可逆轉的一大方向。而Google推出並開源的移動應用開發框架Flutter,更是其中的明星。
  • 筆者從自身在做Flutter相關的分享中,特彆強烈的感受是,有非常非常多的Native技術棧的同學在學習和使用Flutter,有非常多的前端技術棧的同學在時刻關注Flutter的hummingbird和desktop-embedding的進展。尤其自Flutter1.0 發布後,Flutter受到了業界更多的關注和期待。

跨平臺解決方案比較

  • 目前幾個主流的跨平臺解決方案:
  1. 基於瀏覽器技術的Hybird
  2. 基於橋接Native組件,如RN、WEEX
  3. 基於底層統一渲染,如Flutter
  • 它們有各種的優缺點,但瀏覽器技術無疑是其中的歷史最長、標準最完善、用戶最多、生態最豐富的。RN、WEEX也可以歸類為javascript生態的一個小分支。而Flutter走的是和前兩者截然不同的路線,它是一個新興的挑戰者,通過底層統一渲染,得到高度一致的跨端效果;通過引入dart,得到AOT的接近原生的性能,和JIT的快速開發體驗;通過上層完善的組件體系(material design & cupertino),得到高保真的UI體驗。但它也並非盡善盡美。同時基於底層統一渲染的跨平臺方案有很多,在移動端有實際應用的如QT、cocos2d等。
  • 對比Flutter和QT,最大的區別在語言和背後團隊。
  • 語言:Flutter選擇了Dart,QT是C++。Dart相比C++,對開發者來說無疑於相比騎自行車和開飛機的區別,Dart更容易編寫,除此以外,Dart還擁有AOT和JIT兩種模式、類型安全、快速內存分配等等特點,確實如Flutter團隊所述,同時擁有一兩條這些優點的語言不少,但是將所有這些優點集於一身的,只有Dart。
  • 背後團隊:Flutter的背後是Google,QT的背後是TrollTech,從社區影響力和號召力而言不可同日而語。
  • 但同時也必須要認識到的是通過底層統一渲染的跨平臺方案,也有它天然的劣勢。它很難復用系統天然提供的組件。在擺脫對操作系統的依賴和復用操作系統的能力上,要考慮如何達到了一個最佳的平衡。

Flutter的生態

如果拿Flutter生態同React和Native進行比較的話

  • 基於核心UI表達層向上,這一層會更接近前端的體系,以React生態為參照物,主要的幾部分

路由體系

      • 一種面向以Flutter為主的應用,它的路由以Flutter為主,Native的路由部分往往以簡易橋接的形態存在。
      • 一種面向混合技術棧為主的應用,它的路由以Native為主,Flutter為輔。

狀態管理體系 | 應用框架

      • 基本上在React生態下有的狀態管理,Flutter也有,同時有一些是Flutter獨有的。
      • 開源的代表有:flutter_redux, google的BLoc,scoped_model,及閑魚的fish-redux,它在真實的複雜場景下得到了非常好的驗證。

UI庫體系

      • 目前已有不少UI庫,包含常見的組件。

基於核心UI表達層向下,這一層會更接近Native的體系,以Native生態為參照物,主要的幾部分

    • 核心的一些基礎中間件,如網路,圖片,音視頻,存儲,埋點,監控等。

      • 目前和Native相比還是有非常大的差距。所以也導致了目前大部分這些問題的解決方案,都趨向於橋接的形態。通過復用Native能力來短期補齊Flutter能力不足的。但它不一定是未來的最佳的方案。

一些重量級的基礎組件,如WebView,MapView等。

    • 目前已經能通過PlatformView的形式,得到能力拓展。但是它有使用的侷限性和性能上的損失。

Flutter今年幾個重要的突破點

Code-Push

    • 在當下國內應用生態環境,熱修復或者熱部署能力在很多公司和團隊做技術選型中,往往是其中非常重要的一個選項。如果有Google官方推出,不管是hotfix,還是dynamic-boundle都將極大的推動Flutter在國內的發展。
    • 而基於dart語言的特性判斷,在Flutter上做code-push理論上會比目前任何Native的code-push方案有更強的能力。閑魚團隊一直和Flutter團隊就這方便保持緊密的聯繫,在之前的驗證中,目前在android端是可以支持的,但還留有一些瑕疵。

Humming-Bird

    • 在跨平臺之外,還有一層更高級別的訴求,多應用投放,打破應用之間的孤島壁壘,實現更多的商業價值。而要完成多應用的投放,首選的是基於瀏覽器的方案。Humming-Bird方案為這樣的設想,提供了可能。
    • 同時Humming-Bird也將大大擴張了Flutter的邊界,吸引更多的開發者和廠商的加入,同時讓面向終端的全棧解決方案成為可能。Dart語言也有可能成為javascript生態的更好的補充和演進。

Flutter面向未來

基礎架構設計決定了一個軟體的發展上限,它帶來了更多的想像力。使用Flutter和Dart,既是Google為擺脫和Oracle糾纏多年的「Java 侵權案」提前下的一顆棋,也是Google為下一代操作系統Fusion下的一顆棋,是即Google通過chromium項目漸進的統一瀏覽器領域,著眼於更多的終端,為了一個更大終端生態的大一統做準備。這讓Flutter和Dart充滿了更高層次的可能。如果沒有這些可能,Flutter的生命無疑是會短暫的,因為它還未能建立被廣泛被認可的標準,就像我們終端裏走過的那麼多的技術一樣,都是有限的解決了當下的訴求,但隨著終端的更替,操作系統的演進,慢慢變成了明日黃花。而正是這些更多的可能,是Flutter持續演進的源泉,是Flutter相比其他的跨平臺方案中最吸引人的部分。

本文作者:閑魚技術-吉豐

原文鏈接

更多技術乾貨敬請關注云棲社區知乎機構號:阿里云云棲社區 - 知乎

本文為雲棲社區原創內容,未經允許不得轉載。

推薦閱讀:

相關文章