一. 序
在 Google I/O 2019 上,Dart 團隊宣佈推出新的 Flutter 穩定版本 1.5,這是 Flutter 迄今為止最大的一次版本釋出。
伴隨著 Flutter 1.5 的釋出,同期也宣佈釋出 Flutter for Web 的 Preview 版本,正式開啟了 Flutter 的全平臺 UI 框架之路。
早在年初發布的 Flutter 2019 Roadmap 中,就有提到,會在今年支援移動裝置之外的平臺,對 Web 的支援,算是完成了一個新的里程碑吧。
二. Flutter for Web
Flutter 之所以能夠在移動平臺上執行,主要是依賴的 Flutter Engine,就是 Flutter 所依賴的執行環境。這就導致在移動平臺,只要你使用了 Flutter,哪怕只用混合開發的模式寫了一個頁面,這也將為你的 App 增大大約 4MB 的體積。
而 Flutter for Web,完全是一種全新的模式,它可以將 Dart 編寫的現有 Flutter 程式碼,編譯成可嵌入瀏覽器並部署到任何 Web 伺服器的程式碼。
編譯後的程式碼,完全是基於 HTML、CSS 和 JavaScript 這些標準的 Web 技術,所以它也不需要任何瀏覽器外掛的支援。
早期微軟的 Silverlight 和 Adobe 的 Flash 都證明了,一切需要外掛才能支援的 Web 應用,都是紙老虎,最終都會被基礎的 HTML 技術所替代。
我想這也是 Flutter for Web 選擇這種支援方式的一個考量因素。
新增 Web 支援,涉及在標準 API 之上,實現 Flutter 的核心繪圖層,結合使用 DOM、Canvas 和 CSS,Flutter for Web 能夠實現在現代瀏覽器中提供便攜的、高質量和高效能的使用者體驗。
Flutter for Web 很大程度上,歸功於 Chrome、Firefox 和 Safari 等現代瀏覽器的快速發展,這些瀏覽器提供了基礎的硬體加速的圖形、動畫和文字以及 JavaScript 的快速執行。
隨著 Flutter for Web 的釋出,Flutter 正式成為一個全平臺的 UI 框架。
Flutter 最初的設想,也並不是想作為一個 HTML 的替代品,而是想基於 Flutter 能夠快速構建出全平臺的所支援的,圖形豐富、互動流程的應用。
在 Google I/O 上,也展示了最近刷屏的 KENKEN 益智遊戲(文末有地址),該遊戲在 Android、iOS、Web、Mac 和 Chrome 上,執行的都是相同的程式碼。
Flutter for Web 還只是一個 Preview 版本,還有很多不足和被限制的地方。
限制:
- Flutter_web 的外掛還不完善,暫時只提供了最基礎的
dart:html
、dart:js
、dart:svg
、dart:indexed_db
,可以通過他們訪問絕大多數瀏覽器的 API。 - 並非所有的 Flutter 都在 Flutter_web 上實現了。
- Flutter_web 編譯還很慢。
- 在桌面瀏覽器上執行,還有一些不足,大部分是基於移動應用的操作特性,而沒有對桌面系統的操作習慣進行特殊的優化。
- 開發流程目前僅支援 Chrome。
更多細節,可以直接上 Github 上檢視。
三. 小結
自此 Flutter 就不再是一個單純的移動框架,而是一個多平臺框架,通過它,可以快速的構建應用,更快的觸達使用者。
坦率的講,Flutter 這一年的發展以及推廣效果都是驚人的,據公開的訊息來看,不少一線大廠已經在一些生產專案上,嘗試使用 Flutter,雖然嘗試的大多都並不是主力專案,但這背後一定也少不了 Google 的推廣,Google 本身對 Flutter 的期望也很大,短期應該不會涼。
不過框架這個東西,有興趣看看就好了,畢竟鐵打的基礎,流水的 API,不要花太多的精力沉迷在框架中,把程式設計的基礎技術學好才是正道。如果真到了公司想嘗試 Flutter 的地步,專門花一週兩週突擊一下,肯定能上手。
本文對你有幫助嗎?留言、點贊、轉發是最大的支援,謝謝!
公眾號後臺回覆成長『成長』,將會得到我準備的學習資料,也能回覆『加群』,一起學習進步;你還能回覆『提問』,向我發起提問。