当前位置: 首页 > 科技观察

Airbnb:我们为何选择放弃ReactNative

时间:2023-03-16 14:40:47 科技观察

今年6月,Airbnb技术团队宣布,Airbnb将放弃使用ReactNative,回归使用自己的基于原生技术的框架来开发App。作为世界一流的顶级公司,在为ReactNative投入大量精力后,突然决定放弃,这让很多想用和正在用ReactNative的人感到震惊和不解。近日,在接受外媒采访时,Airbnb工程师GabrielPeal谈到了Airbnb的移动端发展历史、ReactNative的优缺点,以及Airbnb最终决定从ReactNative迁移的原因。ReactNativeforAirbnb的最大优势是快速开发和平台不可知论。借助ReactNative,Airbnb可以利用他们的整个开发团队来帮助构建和支持他们的移动应用程序。这意味着无论其在移动和Web开发方面的背景如何,后续员工都可以快速入职。这也意味着更精简的代码库,因为能够跨三个平台部署一个存储库。但同时也带来了挑战:从0到1,需要很大的投入。很多人认为,当Airbnb决定使用ReactNative时,就发生了彻底的迁移。事实上,到目前为止,ReactNative代码仅占Airbnb代码库和开发。15-20%的资源,一直不是Airbnb公司的主要平台。尽管ReactNative是一个框架并大大简化了移动开发过程,但启动和运行它并不容易,特别是如果您有现有的代码库。将ReactNative集成到现有的移动代码库中预计需要花费大量时间和精力。开发人员仍然需要编写原生代码ReactNative是简单应用程序的不错选择,因为API在两个平台之间有一个清晰的桥梁。在Airbnb的移动应用早期,ReactNative是移动应用中强大的加速器。但最终,API不会按照您想要的方式运行,您将不得不深入研究本机库以进行必要的调整。如果您雇用JavaScript开发人员来维护您的ReactNative项目,他们必须编写本机代码来填补功能空白。当心“地雷”ReactNative代码中的地雷和交互极难追踪和重现。举一个实际的例子,A??irbnb团队遇到了ReactNative组件在某些手机上显示空白的问题。这个错误不仅不可靠,而且很难追踪。解决方案是关闭Fresco的初始化,Fresco是ReactNativeforAndroid的标准图像渲染库。直到今天,工程师们仍然不明白为什么这一步修复了这个错误。永无止境的投资/缓慢的迭代许多团队使用ReactNative来制作小型移动应用程序的原型,并相信它将解决他们所有的问题。但与所有开源软件一样,平台在不断变化,每天都会发现新的错误和问题。支持ReactNative动荡的生态系统需要持续的投资。例如,Airbnb的工程师希望一个符合他们产品目标的补丁能尽快合并到ReactNative框架中。不幸的是,ReactNative的开发生命周期每四个星期发布一次。如果这次没有通过,他们将不得不等待将近一个月的时间才能重新审查或采纳他们的更改。随着Airbnb的增长加速,他们无法承担风险。弊大于利,促使Airbnb重新考虑并最终放弃ReactNative开发。另外,虽然除了ReactNative还有其他的跨平台替代品,比如谷歌的Flutter和微软的Xamarin,但是在这些框架上也能发现上面提到的类似问题,而且这两个框架在谷歌和微软的使用率都比较低微软。虽然跨平台框架可以解决大部分简单的问题,但一些更复杂的问题最终还是需要回到相应移动设备的原生平台来处理。