Flutter VS React Native,跨端方案大 PK

融雲RongCloud發表於2022-01-06

2021 年 12 月 30 日,融雲主辦的業內首個程式設計師綜藝“猿桌派”第二期開播。節目聚焦經久不衰的技術選型問題,是跨端還是原生?是 Flutter 還是 React Native?

以下為精彩回顧:

從成本和市場覆蓋的角度來看,跨端方案的優勢是巨大的,寫一次即可全平臺執行。

那麼,跨端方案如何選?Flutter 還是 React Native?

Flutter VS React Native:生態對比

通過 Flutter 和 React Native 在 GitHub 上的基礎資料對比雙方生態。

Flutter 的基礎資料:Watch 3.6K,Fork 19.9K,Starred 134K。

Fork 代表潛在的開發者,有近兩萬人關注這門語言。Star 數自不必說,證明它的受歡迎程度。選擇第三方框架時,看 Star 數也會幫助開發者降低篩選成本。

還有一個重要指標,Issues 數量。目前一共是 5K+,已關閉 5 萬+。這些資料,都說明團隊在維護 Flutter 的社群上非常用心,及時解決使用者在使用過程中遇到的問題。

React Native 的基礎資料:Watch 3.7K,Fork 21.6K,Starred 100K。其實從時間週期上看,React Native 的資料是有優勢的。在這個前提下,雙方 Watch、Fork 分數相差無幾,Star 數落後。結合時間週期考慮,Flutter 勝出。

Issues 數量 1.9K,比較起來,Flutter 這個數值更大。首先,這可能是因為用的人多,而且涉及端線多,問題肯定更多;其次,Issues 不代表程式碼或框架有問題,也有可能是開發者在使用的時候單純對一些設計不太理解。

所以,社群繁榮度:Flutter > React Native

Flutter VS React Native:效能 PK

從幾個維度,比較 Flutter 和 React Native 對同一個專案的處理效率。

效能 PK 之 List view benchmarking

List view benchmarking,列表測試。

FPS,Native 60,RN 58,Flutter 60,基本打平,相對複雜的檢視裡,重新整理率差不多。

CPU,在同樣保持 60 FPS 的情況下,Native 的 CPU 使用率 2.4%。

React Native 的 CPU 使用率 11.7%,是 Native 的 6 倍,說明它冗餘的工作很多。

Flutter 的 CPU 使用率是 5.4 %,差不多是 Native 的 2 倍。

記憶體,Native 是 58,React Native 是 139,Flutter 是 114。因為 Flutter 相當於是另外一套渲染引擎。

電量,Flutter 更優秀一些。電量跟 CPU 佔用成正比,React Native 還是比較耗電的。

總之,從 List view 這一項的比較來看,Flutter 吊打 React Native。

效能 PK 之 Heavy animations test

用 Lottie 來測 Heavy animations test,看同屏有很多 AE 動畫的情況下,哪方的表現更出色。

非常意外,同頻有很多 Lottie 動畫情況下的 FPS,Native 是 30,是最好的;React Native 29;Flutter 9。

React Native 可能通過橋用 Native 實現,只承擔了轉接的任務,所以跟 Native 差距並不大。

CPU 使用率 Native 是 18.9;React Native 是 15.6;Flutter 最低 12.8。電量方面也幾乎是打平。

從動畫這一項來說,React Native 的表現是比 Flutter 勝出的,可能是因為 Flutter 沒有針對 Lottie 這種動畫場景做優化導致的。

效能 PK 之 Even heavier animations test

看雙方在更復雜的動畫效果上的表現。

FPS, Native 是 58,Flutter 19,React Native 最差,只有 7。

需要注意的是,這些測試資料,是針對於去年的版本來進行的。2020 年 10 月,Flutter 發了 1.7 版本,2021 年 2.0 版本,最近發了 2.8 版本。

但我們可以看出,Flutter 2020 年的版本,已經表現出極具潛力的一面,在優化不那麼充分的情況下,效能上已經大於等於 React Native。

加上 Flutter 在社群建設方面的表現,它被國內多個大廠採用,發展得非常迅速。

從技術方案選型到技術發展路徑

對跨平臺方案的 PK 本質上是一種技術方案的選擇,延申到技術發展路徑的選擇也非常值得探討。假如你要掌握一門新的技術,或者去深挖一門技術。你會如何選擇呢?嘉賓們在節目中也給出了自己的經驗分享。

一方面,在對前端的積累基礎上,可以選擇偏後端一點,深入瞭解後端系統的架構。

另一方面,Flutter 這樣的跨端方向是很好的選擇。首先針對各端去開發一套同樣的介面,同樣的功能,成本是很高的。通過跨端來做,門檻大大降低。

更重要的是,Flutter 是開源的,讓我們有機會對 UI 系統的構建、記憶體管理、編譯等進行深挖。即使我們以後不用 Flutter 了,也可以通過它去了解一套語言是怎麼構建的,程式是怎麼載入的,整個樹是怎麼構建的,渲染引擎是怎麼做的。這些都是寶藏。萬變不離其宗,掌握底層原理就無所畏懼。

順著這個思路,Rust 是一個非常好的方向。目前特別多使用 C++ 的廠商,包括微軟也釋出了一個公告,可能會把百分之六七十底層的 C++ 庫用 Rust 重新寫一遍。

關於技術選型,還有一點非常重要。你的技術選型一定要和當前做的業務有關,因為學習一個語言時,你得先有一個目標或者一個待解決的問題,然後嘗試用一個新的語言和技術去解決,更有成就感也更有效。

那麼,關於這個問題,你怎麼看?
————————————————
版權宣告:本文為CSDN博主「融雲」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/weixin_...

相關文章