Flutter 做爲Google出品的一個新興的跨平臺移動客戶端UI開發框架,正在被愈來愈多的開發者和組織使用,包括阿里的鹹魚、騰訊的微信等。 javascript
今天,我將獻上一份**《全面 & 詳細的Flutter學習指南》**,但願大家會喜歡。java
特別注意:web
下面,簡單介紹一下Flutter的2D渲染引擎:Skia 編程
特別注意:canvas
Flutter框架主要分爲兩層:FrameWork層、Engine層,以下圖所示: 安全
說明:開發時,主要基於Framework層;運行時,則是運行在 Engine上。每層的具體介紹以下: 微信
開發時,主要基於Framework層;運行時,則是運行在 Engine上weex
Engine是Flutter的獨立虛擬機,由它適配 & 提供跨平臺支持;由於其存在,Flutter不使用移動端系統的原生控件, 而是使用本身 Engine 來繪製 Widget (Flutter的顯示單元); Dart 代碼是經過 AOT 編譯爲平臺的原生代碼,因此 Flutter可直接與平臺通訊,不須要JS引擎的橋接。架構
同時 Flutter 惟一要求系統提供的是 canvas,以實現UI的繪製。 框架
編譯時,具體以下:
Flutter理念:「一切皆爲Widget」,Widget是Flutter應用程序用戶界面的基本構建塊,具有如下特色:
Flutter經過使用上述所述的自身渲染引擎、原理框架 & Widget運行,使用一套代碼便可同時構建iOS和Android應用,從而實現跨平臺的特性,最終提升開發的效率
簡介 由Facebook出品,採用了JavaScript語言、JSCore引擎和經過原生渲染的跨平臺框架
實現原理 經過編寫JavaScript語言代碼,經過 React Native 的中間層來調用 Native端的組件,最終實現相應的功能。JS端中所寫控件的做用相似 Map中的key 值,對應着Native端的對應控件(如 Android 中
實現框架 React Native的架構主要由三層實現。其中最重要的是由C++ 實現的中間適配層,此處最主要封裝了JavaScriptCore用於執行JS的解析,最終實現了JS端與原生端的雙向通訊交互。而React Native運行在JavaScriptCore中。(在iOS上直接使用內置的javascriptcore、在Android則使用webkit.org官方開源的jsc.so)
簡介 由Alibaba出品,採用了JavaScript語言、JS V8引擎和經過原生渲染的跨平臺框架
實現原理 與React-Native相似,JS端會經過多個key組合成Dom,最後交由Native端進行解析,最終渲染出Native端的控件,但區別在於:Weex是能夠跨三端的 = Android、iOS、Web,其緣由在於在開發過程當中,代碼模式、編譯過程、模板組件、數據綁定、生命週期等上層語法是一致,不一樣的是Web端和Native端對Virtual DOM 執行的解析方法有所區別。
實現框架 weex的架構主要分爲三部分,具體以下:
注:對於性能的對比,從理論上來講Flutter應該是最接近原生性能 & 最好的,但就目前實際應用&體驗中並沒具有很明顯的差別化,後續需進行進一步的驗證。