Flutter 作為Google出品的一個新興的跨平台移動客戶端UI開發框架,正在被越來越多的開發者和組織使用,包括阿里的鹹魚、騰訊的微信等。
歡迎關注專欄:裡面定期分享Android 開發技術知識點及解析,還會不斷更新的BATJ面試專題,歡迎大家前來探討交流,如有好的文章也歡迎投稿。
定義:一款Google出品&開源的移動客戶端UI開發框架(SDK)
作用:用一套代碼同時在Android、iOS上快速構建高質量、高性能的原生用戶界面
開發語言:Dart語言(高開發效率、高性能等)
Flutter的主要特點包括:使用自身的高性能渲染引擎進行渲染 & Dart編程語言語言
具體介紹如下:
2.1 高性能渲染引擎
特別注意:
下面,簡單介紹一下Flutter的2D渲染引擎:Skia
2.2 Dart語言
Dart語言的特點
3.1 框架結構
3.2 原理概述
編譯時,具體如下:
Flutter理念:「一切皆為Widget」,Widget是Flutter應用程序用戶界面的基本構建塊,具備以下特點:
4.1 跨平台 & 開發效率高
Flutter通過使用上述所述的自身渲染引擎、原理框架 & Widget運行,使用一套代碼即可同時構建iOS和Android應用,從而實現跨平台的特性,最終提高開發的效率
4.2 高性能
5.1 React-Native
由Facebook出品,採用了JavaScript語言、JSCore引擎和通過原生渲染的跨平台框架
通過編寫JavaScript語言代碼,通過 React Native 的中間層來調用 Native端的組件,最終實現相應的功能。JS端中所寫控制項的作用類似 Map中的key 值,對應著Native端的對應控制項(如 Android 中 標籤對應 ViewGroup 控制項)。JS端會通過多個key 組合成Dom,最後交由Native端進行解析,最終渲染出Native端的控制項。
實現框架
React Native的架構主要由三層實現。其中最重要的是由C++ 實現的中間適配層,此處最主要封裝了JavaScriptCore用於執行JS的解析,最終實現了JS端與原生端的雙向通信交互。而React Native運行在JavaScriptCore中。(在iOS上直接使用內置的javascriptcore、在Android則使用webkit.org官方開源的jsc.so)
5.2 Weex
實現原理
與React-Native類似,JS端會通過多個key組合成Dom,最後交由Native端進行解析,最終渲染出Native端的控制項,但區別在於:Weex是可以跨三端的 = Android、iOS、Web,其原因在於在開發過程中,代碼模式、編譯過程、模板組件、數據綁定、生命周期等上層語法是一致,不同的是Web端和Native端對Virtual DOM 執行的解析方法有所區別。
weex的架構主要分為三部分,具體如下:
5.3 三者對比
註:對於性能的對比,從理論上來說Flutter應該是最接近原生性能 & 最好的,但就目前實際應用&體驗中並沒具備很明顯的差異化,後續需進行進一步的驗證。
官網:Flutter - Beautiful native apps in record time
快速入門 & 學習最好的方式是:閱讀Flutter官網的資源,同時官網也是了解最新Flutter發展動態的地方
Flutter中文網社區:Flutter中文網
目前Flutter最大的中文資源社區,提供了:Flutter官網文檔翻譯、開源項目 & 案例等學習資源
StackOverflow:Stack Overflow - Where Developers Learn, Share, & Build Careers
活躍度最高的Flutter問答社區,Flutter開發團隊的成員也經常會在上面回答問題
源碼:Flutter SDK releases
Flutter SDK的源碼具備以下特點:開源、示例 & 詳細注釋,Gallery是Flutter官方示例APP,其源碼在Flutter源碼「examples」目錄下。
我自己整理了一批安卓開發視頻資料、常用MVP,MVC,MVVM框架手寫實戰,Flutter跨平台技術,高級UI、性能優化、NDK等,需要的可以私信我。
TAG:Android | 程序員 | 移動開發 |