- 原文地址:Sunsetting React Native
- 原文做者:Gabriel Peal
- 譯文出自:掘金翻譯計劃
- 本文永久連接:github.com/xitu/gold-m…
- 譯者:ALVINYEH
- 校對者:DateBro
這是系列博客文章中的第四篇,本文將會概述使用 React Native 的經驗,以及 Airbnb 移動端接下來要作的事情。 今天,咱們路在何方?前端
儘管不少團隊都依賴 React Native,計劃在可預見的未來投入使用,但咱們最終沒法實現咱們原來的目標。此外,還有一些咱們沒法克服的技術和組織挑戰,使繼續投入使用 React Native 變得更加困難。react
所以,咱們要一往無前,Airbnb 正式中止使用 React Native,並將咱們全部的精力從新投入原生。android
當 React Native 能按預期工做時,工程師可以以無與倫比的速度進行迭代。可是,咱們在本系列博客中所概述的衆多技術和組織的問題,增長了許多項目的挫折和意外耽擱的時間。ios
最近,隨着 React Native 愈來愈成熟,咱們積累了更多專業知識,如今可以完成許多當初不肯定的事情。咱們構建了共享元素轉換、滾動視差、而且可以顯著地提升過去常常丟幀的一些屏幕的性能。然而,諸如初始化和異步優先渲染等一些技術挑戰,知足某些目標具備挑戰性。內部和外部缺少資源使得這更加困難。git
儘管 React Native 功能中的代碼幾乎能夠在不一樣平臺共享,但咱們的應用中也只有一小部分是 React Native。此外,爲了讓產品工程師可以有效地工做,還須要大量橋接基礎架構。所以,咱們在三個平臺(而不是兩個平臺)上支持代碼。咱們看到了移動端和 Web 之間代碼共享的潛力,而且可以共享一些 npm 包,但除此以外,它從未以有意義的方式實現。github
React Native 的開發人員經驗很是不一樣。在某些方面,例如構建時間,狀況要好得多。可是,在其餘方面,好比調試,狀況比較糟糕。本系列的第 2 部分列舉了具體細節。npm
因爲沒法實現咱們的特定目標,所以咱們作了一個艱難的決定 —— React Native 再也不適合咱們了。咱們目前正在與團隊合做制定健康的過渡計劃。咱們已經中止了全部新的 React Native 功能,並計劃在今年年末以前,將大多數最高流量的視圖頁面轉換爲原生編寫。這獲得了一些即將開始的預約從新設計的幫助。咱們的原生基礎架構團隊將支持到 2018 年的 React Native。在 2019 年,咱們將開始下降支持並減小一些 React Native 開銷,例如啓動時的初始化運行時。後端
在 Airbnb,咱們是開源軟件的堅決信徒。咱們積極使用和促進世界各地的許多開源項目,而且也開放了一些咱們的 React Native工做。因爲咱們已經再也不使用 React Native 了,咱們沒法像社區同樣維護 React Native 的功能。爲了讓社區變得更好,咱們將把一些 React Native 開源工做遷移到 react-native-community,咱們已經開始使用 react-native-maps,並即將使用 native-navigation 和 lottie-react-native。react-native
儘管沒法繼續經過 React Native 來實現咱們的目標,但使用 React Native 的工程師都有不錯的體驗。在這些工程師中:架構
若是有機會,63% 的工程師會再次選擇 React Native,74% 的工程師會考慮將 React Native 用於新項目。但值得注意的是,這些結果中存在固有的選擇偏倚,由於它只調查選擇使用 React Native 的人。
這些工程師在 220 個頁面上編寫了 80,000 行產品代碼以及 40,000 行 Javascript 基礎結構。做爲參考,咱們在每一個原平生臺上分別有,大約 10 倍的代碼量和 4 倍的頁面數量。
這一系列的博客真實反映出了,咱們在現階段使用 React Native 的經驗。可是,Facebook 和更開放的 React Native 社區致力於適合混合應用的 React Native。React Native 正在之前所未有的速度向前發展。去年有超過 2500 個 commit,Facebook 剛剛宣佈他們正在解決咱們正面臨的一些技術挑戰。即便咱們再也不使用 React Native,咱們也很高興可以繼續關注這些發展,由於 React Native 的技術優點爲世界各地使用咱們產品的人們,帶來了實實在在的成功。
咱們將 React Native 集成到大型現有應用中,並持續以很是快的速度迭代。咱們遇到的許多困難,都是因爲採用了混合模型方法。可是,咱們的規模可以承擔並解決小公司可能沒有時間解決的一些難題。想讓 React Native 與原生無縫互相協做是有可能的,但頗有挑戰性。每一個使用 React Native 的公司都會有一種由他們的團隊組成、現有應用、產品需求和 React Native 成熟度肯定的獨特體驗。
當一切齊頭並進時,React Native 能匹配許多功能所作的工做、迭代速度、質量和開發人員的體驗,甚至超越了咱們的全部目標和指望。有時候,真的以爲咱們即將改變移動開發的遊戲規則。儘管這些經歷使人備受鼓舞,但當咱們將積極情緒與工程組織的痛點,以及當前的需求和資源相平衡時,咱們認爲它已不適合咱們了。
決定是否使用新平臺是一項重大的決策,這徹底取決於你團隊的獨特因素。咱們放棄使用的經歷和緣由,可能會不適用於你的團隊。事實上,許多公司現今仍在繼續成功使用它,對於其餘公司來講,它可能仍然是多數公司的最佳選擇。
雖然咱們從未中止過使用原生,但 React Native 退役後能夠騰出更多資源,使原生化比以往更好。請繼續閱讀本系列的下一部分,一塊兒瞭解學習原生的新功能。
這是系列博客文章的第四部分,重點講述了咱們使用 React Native 的經驗,以及 Airbnb 移動端接下來要作的事情。
在此感謝 Laura Kelly。
若是發現譯文存在錯誤或其餘須要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可得到相應獎勵積分。文章開頭的 本文永久連接 即爲本文在 GitHub 上的 MarkDown 連接。
掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、後端、區塊鏈、產品、設計、人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。