背景介紹
從19年過去的兩年時間,Flutter在Google帶領各大廠商的引領下,飛速發展,flutter sdk官方也在快速的迭代升級,從1.0.0到現在的2.5.0,從底層引擎到適配層再到框架層都有比較大的更新,忒別是在混合開發模式的支持上不斷的優化,我們專案也是從1.0.0,到1.12.13,再到2.0.0,盡力過幾次慘痛的升級,也感受到了Flutter官方對于開發者的友好程度,可見google官方對flutter的支持程度,
跨平臺方案分析
親身體驗從最開始的Cordov/AppCan,到RN/Weex,再到現在的Flutter,跨平臺開發始終是任意年代不可逃避的話題,但是之前的技術原理無非是基于兩種:
-
混合開發的web容器時代
-
為了解決原生開發的高成本、低效率,出現了Hybrid混合開發
-
原生中嵌入依托于瀏覽器的WebView
-
Web瀏覽器中可以實作的需求在WebView中基本都可以實作
-
但是Web最大的問題是,它的性能和體驗與原生開發存在肉眼可感知的差異
-
因此并不適用于對性能和用戶體驗要求較高的場景
-
-
以RN和Weex為代表的跨平臺開發
- 將H5標簽渲染層原生控制元件
- 用戶體驗更接近于原生了
- 由于進行了功能裁剪,所以RN對業務的支持能力還不到瀏覽器的5%
- 因此僅適用于中低復雜度的低互動類頁面,面對稍微復雜一點兒的互動和影片需求,都需要通過呼叫原生代碼去擴展才能實作
Flutter優勢
Flutter另辟蹊徑,為了屏蔽上面兩種跨平臺開發方案的缺陷,開啟了自繪引擎時代,它的主要優點:
UI渲染性能高
在生產環境下,Flutter 將代碼編譯成機器碼執行,并充分利用 GPU 的圖形加速能力,因此使用 Flutter 開發的移動應用即使在低配手機上也能實作每秒 60 幀的 UI 渲染速度,
穩定
Flutter UI由于自繪UI,從而避免了平臺層面的UI和系統升級導致的各種兼容問題,但是作為跨平臺開發技術不可避免的需要去維護底層適配層和各種插件實作與原始平臺的通信,這是所有跨平臺的通病,
高效
對開發者來說,使用 Flutter 開發應用十分高效,Flutter 廣受好評的 Hot Reload (熱多載) 功能可以在 1 秒內實作代碼到 UI 的更新,使得開發操作周期被大幅縮短,
開源
也正是由于開源,所以在全球開發者的瘋狂支持下,這幾年flutter飛速發展,越來越趨于完善,相信以后再windows,mac,linux等各個平臺也能大放光彩,真正做到一套代碼多端部署,
社區完善
在中國,Flutter 的開發者社區非常活躍,社區貢獻了大量高質量的技術文章,特別是以閑魚,美團,淘寶為首的各大廠商技術方案的支持等,遇到大部分問題都能在網上找到解決方案,作為一個跨平臺技術的一個新秀來說,這已經是不得了了,
總結
下面來一個簡單的比較
| 框架代表 | 技術型別 | UI渲染方式 | **性能 ** | 開發效率 |
|---|---|---|---|---|
| Cordova,AppCan | H5+原生 | WebView渲染 | 一般 | |
| RN、Weex | js+原生渲染 | 原生控制元件渲染 | 高 | 中 |
| Flutter | 自繪UI+原生 | 呼叫系統API渲染 | 高 | 高(AOT,JIT) |
不論是哪一代的開發技術,解決的問題無非就是那么幾個:性能,開發效率,熱更新,前兩者flutter已經接近完美解決了,至于熱更新相信隨著后面不斷的更新迭代,會有越來越優秀的解決方案,
可能很多人會認為flutter的最大弊端在于dart,但是對于一個跨平臺的方案來說一種語言應該不至于阻礙它的發展,至少flutter選擇dart這門語言肯定也是由它的優勢所在,最看的見得優勢就是JIT,即時編譯極大的提高了開發效率,當然還有各種優勢與弊端網上一搜一大把,這里就是仁者見仁智者見智了吧,
我想信flutter這種跨平臺開發技術應該是就是未來,至于是不是flutter最終稱王不得說,可能后面也會有更好的開發框架,但是這種自繪應該就是趨勢,
以上是我實際開發經驗的總結心得,也不一定是完全正確的,讓我們拭目以待吧,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/349670.html
標籤:其他
