最近的Google IO提到了Flutter for Web萝究,F(xiàn)lutter可以直接在web上展示了免都。
Flutter的目標是:
the best framework for developing beautiful experiences for any screen.
成為能夠在任何屏幕上開發(fā)出極致體驗的最好的框架。
Flutter從最初的支持移動開發(fā)糊肤,發(fā)展成現(xiàn)在的支持web琴昆,桌面開發(fā)氓鄙,嵌入式設(shè)備等馆揉。開發(fā)一套代碼就可以運行在這么多平臺,確實非常美好抖拦。不用再Android iOS 各有一套了升酣。
Flutter的Web架構(gòu)如圖,其實和在Android和iOS上的架構(gòu)圖非常相似态罪,對于上面框架層(FrameWork)基本都是一樣的噩茄,只是底層用了瀏覽器的API進行兼容。
Flutter for web的架構(gòu):
Flutter 客戶端的架構(gòu):
從架構(gòu)圖中可以看出复颈,F(xiàn)lutter for web最后的繪制是基于Dom和Canvas的绩聘。Native客戶端的實現(xiàn)是直接使用引擎繪制,不再使用原生控件耗啦。
官方解釋了為什么不用WebGL:因為WebGL是非常底層的凿菩,需要實現(xiàn)很多瀏覽器已經(jīng)實現(xiàn)的功能比如文字排布、柵格化2D圖片等帜讲。而且暫時沒有找到用WebGL方式兼容非Flutter組件的方案衅谷。
目前,F(xiàn)lutter for Web仍然只是預覽階段似将,官方并不建議在生產(chǎn)環(huán)境使用获黔,但是去看官方提供的例子,功能上已經(jīng)非常齊全了在验,各種動畫的完成度也非常高玷氏,只是在手機上的性能還是有點差,后面應(yīng)該會進行優(yōu)化腋舌。
雖然目前Flutter web的體驗還不是很好盏触,但是卻可以有很多想象的空間。
比如Flutter web和PWA結(jié)合。PWA可以讓Web的體驗更像Native一樣耻陕,比如提供資源緩存拙徽,離線訪問能力,通知能力等诗宣。這樣一套Flutter代碼就可以在各個平臺上順利運行了膘怕。
對于一些業(yè)務(wù)場景很多的公司就非常有效,就比如大眾點評召庞。在客戶端里和在瀏覽器里的基本是一樣的UI岛心,目前他們用的是RN的方式兼容多套±鹤疲客戶端內(nèi)使用RN忘古,瀏覽器內(nèi)將RN底層組件替換成web的。但是如果Flutter能夠提供很好的原生體驗诅诱,并且在瀏覽器里也同樣有很好的使用體驗髓堪,一定會很受歡迎。能夠帶來更好的開發(fā)體驗娘荡。唯獨就是熱更新能力要看什么時候可以以什么方式支持了干旁。熱更新能力對于國內(nèi)的開發(fā)場景也非常重要。