- 原文地址: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 的工程师都有不错的体验。在这些工程师中:markdown
若是有机会,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、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。