日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

开发跨平台app推荐React Native还是flutter?

發(fā)布時間:2024/8/23 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开发跨平台app推荐React Native还是flutter? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

嗯。。。這個問題十分不好回答啊(捋下魚須)。閑魚作為flutter領域的先驅(qū)者,以及fish_redux、flutter_boost等當紅flutter庫的作者,當然是歡迎廣大的開發(fā)者多多使用flutter相關技術棧 逃~:)。咳咳,不過呢,我們還是正經(jīng)得聊一下React Native(下面簡稱RN)和flutter之前的異同:

0x00 簡單介紹一下

React Native

React Native是Facebook開源的一款基于react思想、使用JS、能夠給移動平臺帶來native般體驗的框架,官網(wǎng)最新的版本是0.5.9。

flutter

flutter來自Google,上層使用dart語言構建跨平臺應用,通過平臺相關的embedded層接入到使用c++編寫的engine層,再通過skia庫直接與GPU進行交互。通過對dart代碼的AOT編譯,擁有優(yōu)異的計算(CPU)、渲染(GPU)性能。官網(wǎng)最新的版本為1.2。

0x01 跨平臺性

開發(fā)者們使用跨平臺技術棧,首要的目的是為了能夠省事兒,所以跨平臺能力是首先要被衡量的指標。

Build native mobile apps using JavaScript and React

這意味著開發(fā)者可以復用龐大的JavaScript生態(tài)和優(yōu)雅的react思想來書寫RN的代碼,給開發(fā)提供很多的便利性。

從實現(xiàn)原理上來說,RN進行完排版之后會把最終的渲染交給native view,這種方式帶來的是如native般的UI性能,但同時也給給平臺一致性帶來了一些問題。除開渲染層的不一致,在iOS和Android沒有使用同一個JavaScript虛擬機也會帶來一些暗坑。

手勢的處理上兩個平臺不好統(tǒng)一,RN官方也沒有提供一個抹平差異的庫,雖然開源社區(qū)有react-native-gesture-handler。

Beautiful native apps in record time

flutter官方的口氣很大,說自己是”空前“的。是不是”空前“,我們得來評估一下。

編程語言層面,flutter使用dart語言構建應用,這門語言對大多數(shù)人來說應該是比較陌生,好在dart的語法并不復雜,與Java等強類型oop語言非常相似,還加入了函數(shù)式的特性,使用起來還是挺方便的。

flutter提供類似React思想的響應性UI編程模型,讓UI開發(fā)變得更加fancy。

原理上來說,flutter在各個平臺上使用統(tǒng)一的vm(dart vm),自帶GDI(skia)。skia是一個已經(jīng)發(fā)展多年成熟度相當高的2D圖形庫,也是Android系統(tǒng)和Chrome一直在使用的圖形庫。

flutter從邏輯計算到渲染繪圖,都是自己的,使得它在跨平臺一致性上有良好的表現(xiàn)。dart提供的AOT特性也可以保證應用在線上有一個好的性能表現(xiàn)。

多平臺支持

RN目前支持iOS和Android兩個平臺,另外有個非官方的ReactNativeX的項目旨在讓RN運行到其他平臺。

flutter早期支持iOS和Android,desktop的支持目前尚不完善。近期flutter團隊發(fā)布了Hummingbird,旨在讓flutter編寫的應用可以運行在瀏覽器端。

從多平臺支持的角度看,兩邊差距不大。相比RN,flutter在desktop的支持上有些優(yōu)勢,但目前都是不怎么可用狀態(tài)。

0x02 開發(fā)便利性

工具鏈

RN在打包發(fā)布方面有被前端廣泛使用的webpack支持,官方自己提供了基于瀏覽器的debug工具,與前端同學管用的調(diào)試方式并無二致。

flutter基于iOS和Android已有的打包工具添加了flutter產(chǎn)物打包功能,同樣debug工具也由官方自己提供,除了剛發(fā)布的基于瀏覽器的調(diào)試工具外,flutter團隊提供的調(diào)試工具可以直接在Android Studio或者VScode這類IDE上直接使用。

調(diào)試便利性

JS的調(diào)試方式已經(jīng)很成熟了,這里不多做展開。
flutter在debug階段可以使用集成于IDE插件中的hot reload功能做到亞秒級的新代碼加載速度,十分適合與設計師坐在一起結(ya)對(li)編(tiao)程(shi) :)。

第三方庫

在RN上你可以使用JS的大部分庫,平臺相關的plugin也相對豐富。

flutter在這方面稍顯欠缺,庫的數(shù)量上無法與JS生態(tài)相比較。flutter/plugins項目提供了大量的平臺相關插件供開發(fā)者使用,倒也是滿足了日常開發(fā)的需求,另外dart pubs上的公開庫數(shù)量也日趨上升。

在混合開發(fā)和大型app業(yè)務框架上,閑魚技術開源的flutter_boost提供了與native混合開發(fā)的可能,而fish_redux使得大型app中的復雜頁面的開發(fā)在flutter中變得更加容易。

0x03 未來的發(fā)展

開發(fā)者選擇一個技術,都是壓了”身家性命“在上面,誰也不想剛?cè)腴T就發(fā)現(xiàn)這門技術即將被淘汰。

RN是個很好的項目,在發(fā)布之初給移動開發(fā)帶來了一陣旋風。但不得不說,Airbnb宣布放棄使用RN技術棧對于整個社區(qū)有不小的打擊,而文章中對原因的闡述也相當有說服力。

flutter在1.0發(fā)布之后趨于成熟,被欽定為Google Fuchsia系統(tǒng)的應用層框架。從團隊2019 roadmap中可以看到,flutter當前重點在于完善一些現(xiàn)有功能上的細節(jié)與bugfix,另外對于廣受期待的動態(tài)化特性,flutter團隊也在開發(fā)code push功能。從flutter團隊目前的方向和筆者在閑魚開發(fā)中實際使用的flutter的感受來看,整體上flutter在框架層面目前已經(jīng)基本上穩(wěn)定。

從桌面端跨平臺框架發(fā)展的歷程來看,Java GUI從最初使用peer(對等設計模式)的AWT,到基于Java圖形繪制接口性能巨慢無比的Swing,再到公認性能最好目前應用最廣泛的基于目標平臺繪制接口的SWT,我們可以從中窺見一些歷史規(guī)律。

peer(對等設計模式),即AWT中的一個控件,對應目標平臺(如Windows)上的一個控件(是不是看起來跟RN有一些相似),最終AWT被放棄是因為peer模式傳輸層級過多造成效率低下,GUI部分為了保證可移植性只能保留各個平臺公共的接口。

SWT與QT(另一個被廣泛使用的桌面端跨平臺GUI框架),犧牲了一部分可移植性(主要是因為直接調(diào)用了目標平臺的圖形繪制接口),帶來了GUI的高性能。flutter也采用了類似技術棧,skia來抹平各個平臺的繪制接口差異,并向上提供統(tǒng)一的圖形接口。

從這個角度來說,無疑flutter可能會是一個更有未來的跨平臺框架。

0x04 寫在最后

當然Facebook官方對于RN正在進行重構,包括把大部分邏輯移動到c++層來減少線程切換的開銷提升性能等。

選擇一個框架需要考慮的實際情況比框架的優(yōu)劣比較更加重要,比如你的項目大小、開發(fā)人員構成等,
RN和flutter作為目前移動平臺上炙手可熱的框架,兩者并不是孰優(yōu)孰劣的對立關系。

紙上得來終覺淺,如果你是個對新技術感興趣,抑或是希望在移動平臺上有所突破的開發(fā)者,何不嘗試一下Google最新的成果咧?


原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的开发跨平台app推荐React Native还是flutter?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。