React Native 開發真有那麼好?!

整理 | 蘇宓

兜兜轉轉,不少開發者還是發現 React Native 的真相定律。

日前,國外知名聊天軟體 Discord 於官方部落格上發佈了一則《Android 版本 Discord 激動人心的更新》公告。在公告中,Discord 指出,其將在未來幾周內改進 Android 版本的應用程序,具體包括通過跨 Android、iOS 和桌面端的集中式簡化應用開發流程,實現跨平臺的功能一致性。

圖源:Discord 官網

圖源:Discord 官網

iOS、桌面端、Android 步調不一,苦不堪言的跨平臺開發

一直以來,我們在使用軟體時經常會發現不同平臺上,相同的應用程序更新步伐都不太一致,往往都是 iOS 端和桌面端先行發佈之後,Android 平臺上的應用程序才姍姍來遲。這種現象也同樣出現在了 Discord 上。

如今,Discord 決定改變這種現狀,其表示正在使用 React Native 來進行 Android 應用開發,這意味著在 Discord 的每個平臺上都能以更快速度改進體驗,同時仍然在 UI 中保留 Android 和 iOS 特定的模式。

Discord Android 版使用 React Native 開發

作為一款跨平臺框架,React Native 是由 Facebook (現更名為 Meta)軟體工程師 Jordan Walke 在 2013 年發起了的一個駭客馬拉松項目,彼時他發現了一種為 iOS 應用程序生成 UI 元件的方法。因此,React 開源框架最初是為 iOS 構建的,並於 2015 年 3 月作為開源項目在 GitHub(https://github.com/facebook/react-native)上可供公眾使用。隨後,Facebook 也迅速為 React Native 提供了 Android 支持。

截至目前,React Native 已經成為 GitHub 中最大的項目之一,擁有 104k Star 和 22.3k 分支。它也被廣泛用於許多流行的移動應用程序,包括Instagram、Microsoft Outlook、Shopify、Tesla、Pinterest 等等。

Discord 自 2015 年以來一直在其 iOS 應用程序中使用 React Native。如今在將 Android 應用程序開發遷移到 React Native 框架下, Discord 表示,「Android 使用者還將享受更快的應用程序更新發布週期的好處。React Native 允許我們簡化和整合流程,有助於工程師更高效地工作,更頻繁地推送更新,特別是現在團隊不會花太多時間為不同的設備維護不同的程式碼庫。」

React Native 是跨平臺神器?

針對 Discord 的遷移,不少網友也發起了對 React Native 的使用的討論。

@ramesh31:

React Native 確實是移動開發的遊戲規則改變者。去年,我用它來構建一個新的 iOS 應用程序,這是自舊的 Objective-C / UI-Kit 時代以來的第一次。實際上,我在幾分鐘內構建了一些東西,這在當時需要花費數小時或數天的時間編寫自定義 OpenGL 和網路程式碼。在這一點上,任何性能權衡都是值得的。

不過,由於性能、迭代速度、複雜度等維度的重重挑戰,曾經也有不少公司如 Airbnb、Udacity 在使用一段時間的 React Native 之後選擇了放棄,重新擁抱原生開發。對此,也有網友@Grim-444 根據自己公司的實踐分享道:

「我非常確信 React Native 只帶來一件真正的改變,那就是它為 PM/經理提供了一些很好的宣傳材料,告訴他們如何領導團隊「切換到共享的跨平臺程式碼庫」。然後,他們在使用 React Native 做遷移工作時,進而需要一直處理遷移到 RN 的長期後果。

以我們公司為例,近日,技術團隊將 Android、iOS 應用程序從原生開發轉為 React Native 開發。RN 發起人承諾在平臺之間共享程式碼以及性能會和原生開發一樣好,以及 UI 也會像原生開發一樣獲得各種各樣的好處,然而最終這些都沒有真正的實現。

到了最後,RN 的程式碼只佔了 Android 應用程序的 20%。技術團隊不能實現「編寫一次」,在兩端運行。

原來,我們有兩個團隊:iOS 和 Android 開發團隊。現在,我們有三個團隊,iOS 原生、Android 原生和 React Native 團隊。進而 React Native 團隊內部還被分為 iOS 和 Android 兩大陣營,顯得特別亂。

另外使用 RN 開發還存在一些問題,如:

  • 對於在 RN 中沒有辦法完成的事情,我們還得需要一個配備齊全的 Android 團隊的支持。

  • 在使用 React Native 開發時,與原生開發的應用程序性能差異非常明顯。

  • 現在我們組織也有問題,因為應用程序涉及多個團隊/語言,應用程序的不同部分由不同的團隊和管理層擁有,而不是只有一個團隊來開發一款好的應用程序。

  • 我們團隊的不少工程師都不想與 RN 有任何關係。

  • 我們的程式碼庫現在依賴於第三方平臺和完全不同於 Google 所說的應該構建 Android 應用程序的語言。為什麼我們不按照 Android 團隊所說的方式構建 Android 應用程序呢?是否真的有必要長期支持 RN/JS?」

為此,你怎麼看?是否使用過 React Native?

參考:

https://news.ycombinator.com/item?id=32310392

https://discord.com/blog/android-react-native-framework-update

相關文章

React-Native 開發實用指南

React-Native 開發實用指南

【CSDN 編者按】本文主要介紹 React-Native 的實際使用經驗,對於想要快速入門的同學是有幫助的。 作者 | 佐玉 整體介紹 首...

載入速度慢?Android Cocos 最佳化實戰

載入速度慢?Android Cocos 最佳化實戰

針對 Cocos 遊戲存在載入速度慢的問題,技術團隊進行了最佳化。不僅僅提升了使用者體驗的提升,而且最佳化了項目結構,還為未來遊戲-原生跨環...

Python 與 JavaScript 做比較公平嗎?

Python 與 JavaScript 做比較公平嗎?

在討論應該使用 Python 還是 JavaScript 構建項目時,一般我們都不會說只使用一種程式語言來構建所有的元件。 在現代軟體開發中...