如果你想了解更多知識,可以點選:#常見問題
flutter會取代rn嗎?這是很多網友問到的問題,但我想說的是,任何一項技術都有它的優點,缺點,沒有什麼替代一說,只有它適不適合你。
Flutter
Flutter是Google的行動UI框架,可以快速在iOS和Android上建立高品質的原生用戶介面。 Flutter可以與現有的程式碼一起工作。在全世界,Flutter正在被越來越多的開發者和組織使用,而Flutter是完全免費、開源的。
Flutter 是由 Google 的工程師團隊打造的,用於創建高效能、跨平台的行動應用程式的框架。
Flutter 針對當下以及未來的行動裝置進行最佳化,專注於Android and iOS 低延遲的輸入和高幀率
Flutter的設計跟react-native很像,但是比RN進了一步
Flutter的開發語言是Dart
行動端跨平台開發技術演進
## 現在主流的行動開發平台是Android和iOS,之前還有windows phone。從最開始的Hybrid混合開發技術,到RN的橋接技術,到現在新興的Flutter技術,跨平台開發技術一直在演進。跨平台開發第一個考慮的就是效能問題
RN的效率由於是將View編譯成了原生View,所以效率上要比基於Cordova的HTML5高很多,但是它也有效率問題,RN的渲染機制是基於前端框架的考慮,複雜的UI渲染是需要依賴多個view疊加.比如我們渲染一個複雜的ListView,每一個小的控件,都是一個native的view,然後相互組合疊加.想想此時如果我們的list再需要滑動刷新,會有多少個物件需要渲染.所以也就有了前面所說的RN的列表方案不友好; Flutter 吸收了前兩者的教訓之後,在渲染技術上,選擇了自己實現(GDI),由於有更好的可控性,使用了新的語言Dart,避免了RN的那種通過橋接器與Javascript通訊導致效率低下的問題,所以在性能方面比RN更高一籌;有經驗的開發者可以打開Android手機開發者選項裡面的顯示邊界佈局,發現Flutter的佈局是一個整體.說明Flutter的渲染沒以使用原生控制項進行渲染react-native框架原理圖
Flutter實作跨平台採用了更徹底的方案。它既沒有採用WebView也沒有採用JavaScriptCore,而是自己實作了一個UI框架,然後直接系統更底層渲染系統上畫UI。所以它所採用的開發語言不是JS,而Dart。據稱Dart語言可以編譯成原生程式碼,直接跟原生通訊。Flutter框架原理圖
# Flutter將UI元件和渲染器從平台移至應用程式中,這使得它們可以自訂和可擴展。 Flutter唯一要求系統提供的是canvas,以便客製化的UI元件可以出現在裝置的螢幕上,以及存取事件(觸摸,計時器等)和服務(位置、相機等)。這是Flutter可以做到跨平台且有效率的關鍵。另外Flutter學習了RN的UI程式設計方式,引進了狀態機,更新UI時只更新最小改變區域。 系統的UI框架可以取代,但是系統提供的某些服務是無法取代的。 Flutter在跟系統service通訊方式,採用的是一種類似插件式的方式,或者有點像遠端過程呼叫RPC方式。這種方式據說也要比RN的橋接方式有效率。Flutter與RN異同
●Flutter性能會更好無線接近原生的體驗,Dart是AOT編譯的,編譯成快速、可預測的本地代碼 ●RN採用JS語言開發,基於React,對前端工程師更友善。 Dart語言受眾小 ●Flutter自己實作了一套UI框架,丟棄了原生的UI框架。而RN還是可以自己利用原生框架,兩個各有好處。 Flutter的兼容性高,RN可以利用原生已有的優秀UI ●RN的佈局更像css,而Flutter的佈局更像native佈局,但是去掉xml透過程式碼直接寫需要適應下●Flutter的第三方庫還很少,RN發展的早,雖然也還不完善,Flutter github還有3000多個issues要解決,還有很長的路要走。
沒有更好只有更適合你的框架
#以上是flutter會取代rn嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!