在过去的两年里,沃尔玛的工程师们一直在稳步地将React Native整合到他们的移动开发工具中。他们并没有瞄准单纯的React原生应用,而是选择了一款充分利用了React原生功能的混合应用。 有几种方法可以为iOS和Android构建移动应用程序。您可以选择两个完全独立的本机实现,完全不共享代码;您可以使用Flutter、React Native、ionor Xamarin进行跨平台开发,目标是只开发单个代码库;或者,您可以针对一个混合应用程序,其中一部分是本地的,一部分是使用跨平台开发框架构建的。每种方法都在成本和收益之间取得平衡,没有一种解决方案是适合所有情况的。 虽然混合应用程序方法似乎是最明智的,但如果选择了错误的技术,构建一个共享公共代码库的混合应用程序可能会产生隐藏的成本,甚至比构建两个独立的本地应用程序还要昂贵。相反,明智地将本机技术与跨平台技术混合可以帮助您取得适当的平衡,并获得良好的开发性能。 这正是沃尔玛采用React Native为Android和iOS重写部分现有应用程序的情况。由于他们的方法,沃尔玛的工程师说他们可以使开发速度加倍;不仅在移动应用程序之间共享业务逻辑,而且还与他们的React/Redux Web应用程序共享业务逻辑;利用开发人员在Web技术方面的经验来构建移动功能;利用即时页面重载和在线(OTA)代码推送来修复关键问题。 沃尔玛方法的一个关键组成部分是它自己的电极平台和它的同胞电极。 要在任何软件迁移项目中获得成功,拥有三个T是很重要的:团队、工具和韧性。我们已经有一个由React开发者组成的小团队投入到移动应用世界并热爱它。我们需要一个工具来帮助我们将RN页面集成到我们的原生应用程序中,并为我们提供一种JavaScript和原生应用程序之间通信的标准方式。 允许使用AAR文件或框架在现有的移动应用程序中集成迷你应用程序。迷你应用程序只是反应本地应用程序,能够通过自动生成的JavaScript、Java或Swift api与应用程序的其余部分通信。此外,电极原生应用程序可以使用一个集中的文档数据库来共享有关移动应用程序版本、原生依赖项和有关微型应用程序的信息。 沃尔玛工程师做出的另一个有利的设计决策是使用本机导航而不是React本机导航系统。这使得在现有的视图堆栈中一个一个地集成新的页面与本地动画和速度成为可能。 此外,在现有的导航堆栈中嵌入新页面可以更容易地使用A/B测试来了解客户对新功能的反应,有时还可以禁用React Native页面来处理任何问题。 目前,沃尔玛移动应用几乎完全由React Native提供支持,但这两个应用仍将保持混合模式,并利用Native平台进行更好的集成。最初的文章包含更多的细节,比如相关的组织挑战以及沃尔玛如何克服这些挑战。