【译】 Airbnb 的 ReactNative 尝试

Medium 原文 React Native at Airbnb

2016年,我们在 ReactNative 上下了很大赌注。两年后的今天,我们打算向全世界分享一下我们的经验,同时也聊一聊我们未来的打算。

这是我们一系列文章中的第一篇,整个系列文章打算重点介绍我们在 React Native 方面的经验以及Airbnb 的移动端App 下一步该怎么走

当10年前 Airbnb 刚上线的时候,智能手机还处于初期阶段。从那时起智能手机就逐渐变成日常生活中不可或缺的工具。尤其是越来越多的人愿意带着手机环游世界。作为一个服务于数百万人的创新型旅行社区类产品,在手机上开发一款世界级的 App 就变得至关重要。因为手机这类移动设备,将是广大旅行者们在离开家的时候,最主要甚至是可能是唯一通信形式。

自从2008年我们的最早的三名客人入住 Rausch 街以来,我们的移动用户的使用情况,已经从零增长到每年百万下单量。我们的移动 App 可以让房主能够在任何时候管理他们的房源,也能在任何时候为住进来的客人对于他们的旅行提供一些建议与灵感,所有的这一切只需要在 App 上动动手指就好了。

为了根上移动业务的飞速发展,我们已经将团队扩大到100多名工程师的规模,以实现新的功能和改进现有的体验。

押宝 ReactNative

我们一直持续不断的评估层出不穷的新技术,就是为了能够改善房主与客户的体验。同时也希望可以保证我们开发者有着极好的开发体验,从而能做到对业务体验需求快速响应。在2016年,我们开始尝试 ReactNative。在那个时候,我们意识到了移动端对于我们的整个业务来说非常重要,但我们没有足够的移动端开发工程师来达到我们的业务目标。因此,我们开始寻找代替方案。我们的网站主要就是用 React 框架构建的,并且 React 在 Airbnb 内部被看做是非常有效也通用化的 Web 框架。鉴于此,我们认为 ReactNative 由于他的代码跨平台的特性,可以让更多工程师进行移动端开发,是一个机会。

当我们开始持续投入 ReactNative 的时候,我们也发现这里面也存在着风险。当我们添加一个全新的快速试错的大型框架到我们的代码库中的时候,我们应该尽可能的做到分割解耦,而不是全都揉在一起。并且我们认为,如果我们要投入 ReactNative 我们就要最佳实践,所以我们对投入 ReactNative 的目标就定为:

  • 1 作为一个整体团队可以快速迭代
  • 2 接近原生的质量
  • 3 编写一次业务代码,同时适配2个移动平台
  • 4 提高工程师的开发体验

我们的经验

在过去的两年中,我们把这种技术上的实验转化为了巨大的生产实践。我们把 ReactNative 深度集成到 App 中,实现了非常复杂的诸如共享元素转场/视差效果等,并且桥接了丰富的本地基础功能,诸如网络/实验/国际化。

我们用 ReactNative 上线了 Airbnb 中很多关键产品,Experiences(旅行经历)这是一个 Airbnb 的全新业务模块,整个 Experiences 功能都是通过 ReactNative 构建的。除此之外还有从评论到礼品卡等几十项功能,也是用 RN 构建的。而大部分的这些 RN 功能都是在我们缺乏原生客户端工程师的情况下完成上线的。

不同的团队对 ReactNative 的理解,都有着巨大的差异。尤其是当和其他人沟通争论技术代码与结构框架设计的时候,有时候就会觉得 ReactNative 很扯淡。在后面一系列的文章中,我们会详细介绍一堆细节经验,以及未来我们打算怎么做。

第一篇文章(本篇):介绍一下我们使用 ReactNative 的背景

第二篇文章:我们会列举 ReactNative 技术上的优点与缺点

第三篇文章:我们会列举组建移动端跨平台团队上所面临的挑战

第四篇文章:我们会重点声明我们现今对 ReactNative 的看法,以及 Airbnb 未来会是什么样

第五篇文章:我们会带着我们从 ReactNative 中获得的巨大收获,来让 Native 变的更好