發表日期:2018-04 文章編輯:小燈 瀏覽次數:1677
Flutter是Google一個新的用于構建跨平臺的手機App的SDK。寫一份代碼,在Android 和iOS平臺上都可以運行。
React Native、Weex等一直存在一個問題,就是性能跟原生App存在很大的差異。這跟它們的原理有很大的關系,下面從原生App,RN、Weex,Flutter的簡單原理說一下它們的不同。
原生App
蘋果2008年發布iOS,Google 2009年發布Android,它們的SDK是基于兩種不同的編程語言Objective-C 和 Jave.現在又有了Swift和Kotlin。
上面是原生App的一個簡單架構,開發人員直接調用平臺SDK進行UI開發。由于語言及SDK的不同,所以開發人員必須為兩個平臺分別開發App。
WebViews
最早的跨平臺方案是基于JaveScript 和 WebView的,像PhoneGap、Cordova、Ionic等。
UI通過WebView來顯示html代碼,系統服務則通過一個中間層橋接到JaveScript中去。
React Native
RN不僅橋接系統服務,也將系統UI也橋接到了JaveScript中,這樣寫出來的UI最終也會渲染成原生的控件。
如上圖這樣,UI的渲染是很頻繁的,要使UI不卡頓,必須達到60Fps。但是橋接會花一定的時間。所以這樣的架構有時候會有性能問題。
Flutter
Flutter使用Dart語言開發,Dart可以被編譯(AOT)成不同平臺的本地代碼,讓Flutter可以直接和平臺通訊而不需要一個中間的橋接過程,從而提高了性能。
flutter的學習文章都整理在這個github倉庫里