写点什么

沃尔玛如何使用 React Native 开发 iOS 和 Android 应用

2020 年 1 月 17 日

沃尔玛如何使用React Native开发iOS和Android应用

在过去的两年里,沃尔玛(Walmart)的工程师们一直在稳步地将 React Native 集成到他们的移动开发工具箱中。他们并没有选择纯粹的 React Native 应用程序,而是选择了一款充分利用原生和 React 最佳特性的混合应用程序。


为 iOS 和 Android 构建移动应用程序有好几种方法。我们可以选择采用两个完全独立的原生实现,完全不共享任何代码;我们也可以使用 Flutter、 React NativeIonicXamarin 来进行跨平台开发,实现只有一个代码库的目的;或者,我们可以构建一个混合应用程序,其中一部分是原生的,另一部分是使用跨平台开发框架构建的。每种方法都可以在成本和收益之间取得平衡,不存在某种解决方案对所有情况来说都是最佳的。


虽然采用混合应用程序的方法看起来是最明智的,但是如果我们选择了错误的技术,那么构建一个共享公共代码库的混合应用程序可能会产生隐性成本,这甚至会比构建两个独立的原生应用程序还要昂贵。相反,巧妙地将原生与跨平台技术混合使用可以帮助我们取得适当的平衡,并获得良好的开发性能。


这正是沃尔玛采用 React Native 为 Android 和 iOS 重写部分现有应用程序时遇到的情况。沃尔玛的工程师表示,正是因为采用了这种方法,他们将开发速度提高了一倍;不仅可以在移动应用程序之间共享业务逻辑,而且还可以与他们的 React/Redux Web 应用程序共享业务逻辑;可以利用开发人员在 Web 技术方面的经验来构建移动功能;并利用即时页面重新加载和空中(OTA)代码推送来修复关键问题。


沃尔玛方法的一个关键组成部分是它自己的 Electrode 平台,以及它的“同胞兄弟” Electrode Native。


为了在任何软件迁移项目中都能取得成功,拥有三个 T 是很重要的:团队(Team)、工具(Tools)和韧劲(Tenacity)。我们已经有了一个小型的 React 开发团队,他们深入移动应用程序领域并热爱它。我们需要一个工具来帮助我们将 RN 页面集成到原生应用程序中,并为我们提供一种能在 JavaScript 和原生应用程序之间进行通信的标准方式。


Electrode Native 允许使用 AAR 文件或框架在现有的移动应用程序中集成 MiniApp。MiniApp 就是 React Native 应用程序,它能够通过自动生成的 JavaScript、Java 或 Swift API 与应用程序的其它部分进行通信。此外,Electrode Native 应用程序可以使用集中式文档数据库来共享移动应用程序版本、原生依赖关系以及 MiniApp 应用程序相关的信息。


沃尔玛工程师采取的另一个有利的设计决策是使用原生导航,而不是 React Native 的导航系统。这使得在现有视图堆栈中一个接一个地将新页面与原生动画和速度集成成为可能。


此外,在现有导航堆栈中嵌入新页面可以更容易地使用 A/B 测试来了解客户对新特性的反应,并且有时还可以通过禁用 React Native 页面来应对一些问题。


目前,沃尔玛移动应用程序几乎完全是由 React Native 来提供支持的,但这两个应用程序仍将保持混合模式,并利用原生平台进行更好的集成。原始文章中还包含了更多的其他详细信息,比如相关的组织挑战以及沃尔玛是如何克服这些挑战的。


原文链接:


Using React Native for iOS and Android App Development at Walmart


2020 年 1 月 17 日 09:002404

评论

发布
暂无评论
发现更多内容

Java异常处理的9个最佳实践,看看自己是不是都用过?

geekymv

Java 异常处理

Hystrix-技术专题-基础运作原理

李浩宇/Alex

“关灯”看这出戏,依旧是百年至美

脑极体

多线程之信号量(By C++)

赖猫

c++ 多线程

普本开发三年,每天两小时面试备战,2个月后五面阿里定级P7

Java架构之路

Java 程序员 架构 面试 编程语言

关于自己的一个梦(控制)

Yuchen

情绪控制 心理 个人 控制感 自我思考

够屌!看完“大牛程序员必修16课”足足让你超越80%Java面试者!赶紧冲!

比伯

Java 编程 程序员 架构 面试

领域驱动落地实现

星际行者

DDD 领域驱动

python3参考秘籍-附PDF下载

程序那些事

Python 程序那些事 Python秘籍 Python数据分析

Rust太难?那是你没看到这套Rust语言学习万字指南!

华为云开发者社区

rust 语言 开发语言

别找了,这份PDF是目前Java程序员最全面的学习文档,没有之一

Java架构之路

Java 程序员 架构 面试 编程语言

【Java入门】Array

HQ数字卡

Java 七日更

游戏自动化测试——局内战斗

行者AI

测试

GitHub标星78.9K的算法宝典,让你分分钟刷爆LeetCode,更有“左神”精讲视频加持,金三银四offer手到擒来

云流

程序员 面试 算法 架构师

2020 年美国程序员收入报告出炉,字节跳动上榜

多颗糖

程序员 招聘

架构师训练营第五周总结

Geek_xq

一周信创舆情观察(12.14~12.20)

统小信uos

架构师系列11 微服务架构的思考

桃花原记

图解HTTP权威指南(二)| 连接管理

李先生

运维 HTTP SRE TCP/IP

刨根问底,kafka到底会不会丢消息

爱笑的架构师

kafka 消息队列 Kafka知识点 消息中间件 七日更

美团五面+滴滴四面,复盘总结117道面试题,大厂套路展露无遗

Java架构之路

Java 程序员 架构 面试 编程语言

真香~~看完看阿里P8大牛手写的450页文档总结,我精通Java并发编程了

Java架构之路

Java 程序员 架构 面试 编程语言

四面美团大众点评归来,分享一下我总结的面试题及解析:并发+spring+分布式+jvm+缓存+数据库

Java架构之路

Java 程序员 架构 面试 编程语言

skynet源码分析之网络层—Lua层

赖猫

c++ lua skynet

花火交易所系统APP软件开发

开發I852946OIIO

系统开发

乘百度AI之风,媒体从业者们这样登上智能云端

脑极体

今天,我们为什么应该读懂华为人工智能?

脑极体

架构师训练营大作业1

邓昀垚

刘华:戏说Docker和K8s,一文让你成为懂王

刘华Kenneth

Docker 云计算 Kubernetes DevOps k8s

架构师训练营第五周作业

Geek_xq

微服务:服务本身的设计、维护以及治理

积极&丧

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

沃尔玛如何使用React Native开发iOS和Android应用-InfoQ