Flutter是什么?
Flutter是Google一個(gè)新的用于構(gòu)建跨平臺的手機(jī)App的SDK。寫一份代碼,在Android 和iOS平臺上都可以運(yùn)行。
跟React Native、Weex等有什么不同?
React Native、Weex等一直存在一個(gè)問題,就是性能跟原生App存在很大的差異。這跟它們的原理有很大的關(guān)系,下面從原生App,RN、Weex,F(xiàn)lutter的簡單原理說一下它們的不同。
-
原生App
蘋果2008年發(fā)布iOS,Google 2009年發(fā)布Android,它們的SDK是基于兩種不同的編程語言O(shè)bjective-C 和 Jave.現(xiàn)在又有了Swift和Kotlin。
上面是原生App的一個(gè)簡單架構(gòu),開發(fā)人員直接調(diào)用平臺SDK進(jìn)行UI開發(fā)。由于語言及SDK的不同,所以開發(fā)人員必須為兩個(gè)平臺分別開發(fā)App。
-
WebViews
最早的跨平臺方案是基于JaveScript 和 WebView的,像PhoneGap、Cordova、Ionic等。

UI通過WebView來顯示html代碼,系統(tǒng)服務(wù)則通過一個(gè)中間層橋接到JaveScript中去。
-
React Native
RN不僅橋接系統(tǒng)服務(wù),也將系統(tǒng)UI也橋接到了JaveScript中,這樣寫出來的UI最終也會渲染成原生的控件。

如上圖這樣,UI的渲染是很頻繁的,要使UI不卡頓,必須達(dá)到60Fps。但是橋接會花一定的時(shí)間。所以這樣的架構(gòu)有時(shí)候會有性能問題。
-
Flutter
Flutter使用Dart語言開發(fā),Dart可以被編譯(AOT)成不同平臺的本地代碼,讓Flutter可以直接和平臺通訊而不需要一個(gè)中間的橋接過程,從而提高了性能。

