1. 程式人生 > >Facebook 正式公開 React Native 重構細節!

Facebook 正式公開 React Native 重構細節!

640?wx_fmt=gif

【CSDN編者按】Facebook 2013 年開發的 React Native 是著名的跨平臺移動應用開發工具之一。目前,它不僅是最為活躍的開發者社群之一,還是 GitHub 上貢獻者數量最多的開源專案之一。

今年 6 月,為使 React Native 更輕量、更具靈活性以及更適應 JavaScript 生態圈的發展,Facebook 曾對外宣佈將對其進行大規模重構,而現在,Facebook 正式公開了關於重構 React Native 的細節。

640?wx_fmt=jpeg

以下為譯文:

今年,React Native團隊將專注於React Native的大規模重構。

Facebook的React工程經理Sophie在她的文章“React Native的現狀”(http://facebook.github.io/react-native/blog/2018/06/14/state-of-react-native-2018)中提到,我們制定出了一個計劃,可以更好地支援蓬勃發展的React Native使用者數量以及Facebook之外的合作者——現在是時候披露我們更多的工作細節了。

在這之前,我想先闡述一下我們針對開源React Native的長期願景。

我們的React Native願景是:

  • 一個健康的GitHub程式碼庫。問題和拉取請求可以在合理的時間內得到處理。

  • 增加測試覆蓋率。

  • 來自Facebook外部的提交不會破壞開源測試。

  • 更大規模、更有意義的社群貢獻。

  • 穩定的API,簡化開源依賴的介面。

  • Facebook使用與開源相同的公共API。

  • React Native的發行遵循語義版本控制。

  • 充滿活力的生態系統。高質量的ViewManagers,原生模組,以及由社群維護的多平臺支援。

  • 優秀的文件。專注於幫助使用者建立高質量的體驗,並提供最新的API參考文件。

我們認為以下重點領域可以幫助我們實現這一願景。

640?wx_fmt=png

精益核心

我們的目標是縮小React Native的核心範圍,移除非核心元件和未使用的元件。我們打算將非核心的元件移交給社群,使之能夠更快地發展。縮小規模後,也可以更容易地管理React Native的貢獻程式碼。

我們移交給社群的元件之一就是WebView。我們正在制定一個工作流程,可以讓內部團隊在將元件從程式碼庫移除後仍然繼續使用這些元件。我們已經確定將所有權交給社群的元件還有幾十個。

640?wx_fmt=png

內部開源與升級後的工具

Facebook產品團隊使用React Native進行開發的體驗與開源有很大的區別。

Facebook沒有使用開源社群中很流行的工具,但我們有一個內部工具可以實現相同的目的。有些情況下,Facebook團隊可能已經習慣了外界沒有的工具。面對即將到來的開源架構,這些差異性可能會帶來很大的挑戰。

我們還將努力釋出一些內部工具,改進對開源社群流行工具的支援。以下是我們需要解決的部分專案:

  • 開源JSI,並讓社群能夠使用他們自己的JavaScript虛擬機器,來替換React Native從最初版本就一直在使用的JavaScriptCore。我們會在今後的文章中介紹JSI的詳細資訊,同時你可以從Parashuram在React大會上的講話(https://www.youtube.com/watch?v=UcqRXTriUVI)中瞭解更多有關JSI的資訊。

  • 支援Android上的64位庫。

  • 在新架構下啟用除錯。

  • 改進對CocoaPods、Gradle、Maven和新Xcode構建系統的支援。

640?wx_fmt=png

測試基礎架構

Facecbook的工程師在釋出程式碼時,如果通過所有測試,則認為程式碼是安全的。這些測試可以判斷程式碼改動是否有可能破壞我們自己的React Native功能。然而,Facebook通過不同的方法使用React Native。這些差異會讓我們在不知不覺中破壞開源的React Native。

我們將支援內部測試,並確保它們可以在一個非常接近開源的環境中執行。這有助於防止沒有通過測試的程式碼流入開源。我們還將努力開發基礎架構,以便在GitHub上更好地測試核心程式碼庫,方便將來的拉取請求可以輕鬆地包含測試。

再加上React Native核心的規模縮減,貢獻程式碼的人能夠更快更自信地合併拉取請求。

640?wx_fmt=png

公共API

Facebook將會像開源社群一樣通過公共API使用React Native,這可以減少無意中做出具有破壞性的改動。

為了解決這個問題,我們已經開始對內部呼叫進行轉換。我們的目標是融合穩定的公共API,以保證在1.0版中採用語義版本控制。

640?wx_fmt=png

溝通

React Native是GitHub上貢獻者數量最多的開源專案之一。對此我們感到非常高興,我們希望繼續保持這種狀態。我們將會繼續努力採取一些措施(例如提高透明度和公開討論等)吸引更多的貢獻者。

文件是React Native新手會遇到的第一件事,但它並不是我們工作的重點。我們想要解決這個問題,首先我們會重新利用自動生成的API參考文件,建立專注於建立高質量使用者體驗的其他內容,並改進我們的發行說明。

640?wx_fmt=png

時間線

我們計劃大約在明年完成這些專案。其中有些工作已經在進行中,例如JSI已經開源了。其他專案則需要更長的時間才能完成,例如縮減核心規模等。我們會盡最大努力向社群報告最新的進展。

加入我們的“討論和提議”程式碼庫(https://github.com/react-native-community/discussions-and-proposals),這是React Native社群發起的一項倡議,我們已經建立了React Native規劃中的幾項新方案。

原文:http://facebook.github.io/react-native/blog/2018/11/01/oss-roadmap

作者:Héctor Ramos,Facebook工程師。

譯者:彎月,責編:郭芮

推薦閱讀:

640?wx_fmt=gif640?wx_fmt=gif