Airbnb:我们为什么会选择放弃 React Native

王练
 王练
发布于 2018年09月28日
收藏 10

今年6月,Airbnb 技术团队宣布,Airbnb 将放弃使用 React Native,回归到使用基于原生技术的自有框架开发 App。作为一家世界级顶尖公司,在对 React Native 投入大量精力后,突然决定弃它而去,这让不少想要使用和正在使用 React Native 的人都感到震惊和疑惑。

近日,Airbnb 工程师 Gabriel Peal 在接受外媒采访时,聊到了 Airbnb 的移动开发历史、React Native 的优缺点,以及 Airbnb 最终为什么决定从 React Native 迁移。

React Native 对 Airbnb 来说最大优势是快速开发和平台不可知论(platform agnosticism)。通过 React Native ,Airbnb 可以利用整个开发团队来帮助构建和支持他们的移动应用。这意味着无论后来的员工在移动和 Web 开发方面的背景如何,都可以快速培训上手。它还意味着更精简的代码库,因为能够跨三个平台部署一个存储库。但同时,也带来了挑战:

从 0 至 1 ,需要一大笔投入

许多人认为在 Airbnb 决定使用 React Native 时有做完整的迁移,其实到目前为止,React Native 代码仅占 Airbnb 代码库和开发资源的 15-20%,它一直就不是 Airbnb 公司的主要平台。尽管 React Native 是一个框架并且极大地简化了移动开发流程,但启动和运行起来并非易事,尤其是在已有现成代码库的情况下。将 React Native 集成到现有的移动代码库中预期会耗费大量时间和精力。

开发者仍需编写原生代码

对于 API 在两个平台之间具有明确桥梁的简单应用,React Native 是一个很好的选择。在 Airbnb 移动应用的早期阶段,React Native 是移动应用中的强大加速器。但最终,API 将无法以你想要的方式运行,你还是不得不深入到原生库中进行必要的调整。

如果聘请一位 JavaScript 开发者来维护你的 React Native 项目,那么他们必须编写原生代码来弥补功能上的缝隙。

小心“地雷”

React Native 代码中的地雷和互作用极难追踪和重现。举个实际例子,Airbnb 团队有遇到 React Native 组件在某些手机上显示一片空白的问题,该 bug 不仅不可靠,而且难以追踪。

解决方案是关闭初始化 Fresco ,这是一个适用于 Android 的 React Native 标准图像渲染库。直到今天,工程师仍然不明白为什么这个步骤修复了这个 bug 。

投入永无止境/迭代缓慢

许多团队使用 React Native 进行小型移动应用的原型设计,并相信它能解决他们的所有问题。但与所有开源软件一样,该平台在不断变化,每天都会发现新的 bug 和问题。支持 React Native 还处于动荡的生态需要持续的投资。

比如 Airbnb 工程师希望一个符合其产品目标的补丁能够尽快合并进入 React Native 框架,不幸的是,React Native 的开发生命周期为每四周发布一次。如果这次没通过,他们将不得不等待差不多一个月,来重新审查或采用他们的修改。

随着 Airbnb 的发展加速,他们无法承担其中的风险。由于劣势高于优势,促使 Airbnb 重新考量,并最终放弃 React Native 开发。

此外,虽然除了 React Native 之外还有其他的跨平台替代方案,比如 Google 的 Flutter 和微软的 Xamarin ,但和上面提到的类似的问题也都可以在这些框架上面找到,而且这两个框架在 Google 和 Microsoft 中的使用率都相对较低。虽然跨平台框架能解决大多数简单问题,但一些更复杂的问题最终还是需要回到相应移动设备的原生平台来处理。

来自:softwareengineeringdaily.com  编译:开源中国

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:Airbnb:我们为什么会选择放弃 React Native
加载中

精彩评论

Fover
Fover
依稀记得 一年多前看到他们演讲,airbnb如何拥抱React Native。去年还是叫人小甜甜,今年就变成牛夫人了。
红薯
红薯

引用来自“加加0”的评论

编译:开源中国
程序员的习惯啊
编辑+翻译
kut
kut
个人比较喜欢flutter.
encro
encro
6.30的文章又发一遍,有意思吗?
not_empty
not_empty
主要是不专业 RN 要想玩的好 不应该只是招 只会javascript的 应该要 找 android/ios/web 全栈的

最新评论(20

陆小贝
找马甲包上架开发者,想赚外快的来,IOS、安卓平台都有,有意者联系qq:1072454343
冬天之雪
冬天之雪
去年还是叫人小甜甜,今年就变成牛夫人了
encro
encro
6.30的文章又发一遍,有意思吗?
kakai
kakai
想当初React Native都被吹上天了,这下怎么感觉被这文章说得一文不值了。
Raymin
Raymin
界面用 Java ObjC,通用的部分用通用的语言写。
奥西里斯
奥西里斯
坚持原生
not_empty
not_empty
主要是不专业 RN 要想玩的好 不应该只是招 只会javascript的 应该要 找 android/ios/web 全栈的
beyondforever68
beyondforever68
那么他们现在用原生的来开发?
MrNice
MrNice
其实Xamarin 也不错的
TerryZ
TerryZ
这新闻不是发过了吗
返回顶部
顶部