Flutter是什么漓柑?
Flutter是Google一個新的用于構建跨平臺的手機App的SDK教硫。寫一份代碼,在Android 和iOS平臺上都可以運行辆布。
跟React Native瞬矩、Weex等有什么不同?
React Native锋玲、Weex等一直存在一個問題景用,就是性能跟原生App存在很大的差異。這跟它們的原理有很大的關系惭蹂,下面從原生App丛肢,RN、Weex剿干,F(xiàn)lutter的簡單原理說一下它們的不同蜂怎。
-
原生App
蘋果2008年發(fā)布iOS,Google 2009年發(fā)布Android置尔,它們的SDK是基于兩種不同的編程語言Objective-C 和 Jave.現(xiàn)在又有了Swift和Kotlin杠步。
image
上面是原生App的一個簡單架構,開發(fā)人員直接調(diào)用平臺SDK進行UI開發(fā)榜轿。由于語言及SDK的不同幽歼,所以開發(fā)人員必須為兩個平臺分別開發(fā)App。
-
WebViews
最早的跨平臺方案是基于JaveScript 和 WebView的谬盐,像PhoneGap甸私、Cordova、Ionic等飞傀。
image
UI通過WebView來顯示html代碼皇型,系統(tǒng)服務則通過一個中間層橋接到JaveScript中去。
-
React Native
RN不僅橋接系統(tǒng)服務砸烦,也將系統(tǒng)UI也橋接到了JaveScript中弃鸦,這樣寫出來的UI最終也會渲染成原生的控件。
image
如上圖這樣幢痘,UI的渲染是很頻繁的唬格,要使UI不卡頓,必須達到60Fps。但是橋接會花一定的時間购岗。所以這樣的架構有時候會有性能問題汰聋。
-
Flutter
Flutter使用Dart語言開發(fā),Dart可以被編譯(AOT)成不同平臺的本地代碼喊积,讓Flutter可以直接和平臺通訊而不需要一個中間的橋接過程马僻,從而提高了性能。
image
關于學習
flutter的學習文章都整理在這個github倉庫里