经过了两年的时间,可汗学院将他们的 iOS 和安卓应用从原生应用转为了 React Native 应用, 该学院的工程师 Bryan Clark 对这一决定的利弊发表了自己的看法。
可汗学院从 2017 年开始实验 React Native,旨在降低为设计、特性和内容上非常相似的两个应用维护两个独立代码库的固有成本。
除了要重复做一些工作之外,不同的代码库意味着在添加新特性或更改现有特性时,开发人员之间的沟通更加复杂。此外,两个底层 SDK 决定了不同的架构选择,这些叠加在一起使两个应用程序在功能上保持一致变得更加复杂。
就像 沃尔玛的React Native 的迁移经历一样,可汗学院选择了一个渐进式转换,即使用 React Native 重新实现两个现有原生应用的选定特性。例如,可汗工程师从 Search 选项卡开始,围绕它搭建了一个桥接,这样它就可以与原生组件(包括网络、业务逻辑等)共存并交换数据。他们最开始的一步是 将他们的iOS和Android代码库转移到monorepo上,目的是让开发对两个平台都通知的 JS 原生桥接变得更容易。
据 Clark 所说,这一阶段持续了一年多,而且经历了许多困难,因为工程师们必须不断地在两个不同的技术栈之间切换。当他们最终可以将内容数据库转移到 JavaScript 时,他们就可以开始摆脱现有的原生代码,直到他们的应用程序现在几乎完全 React Native 化为止。
与沃尔玛的情况一样,启用这一渐进方法的关键决策是针对内容屏幕使用 React Native,并使用原生导航在本机视图或活动和 React Native 屏幕之间移动。可汗的工程师开发了他们自己的桥接,并没有尝试使用 Electrode native,后者是沃尔玛开发的,目的是简化 React Native 组件与现有原生应用的集成。
在 Clark 看来,React Native 有很多好处。例如,他说其 UI 框架感觉比 UIKit 有更高的一致性:
例如,你针对UICollectionView写的代码不同于UITableView,也不同于UIStackView,但在React Native中,你根本不需要担心这一点。
Clark 还提到 Visual Studio Code 对提高工作效率有很大的帮助,这要归功于它的代码生成器和自动修复程序,这有助于在整个团队中强制实施通用的编程风格。
另一方面,迁移到通用的基于 JS 的代码库也简化了国际化和本地化,这使得可汗学院应用可以毫不费力地将 6 个支持地区变为 19 个。
Clark 说,总体来说,React Native 是一款有效的工具,它可以让不擅长任何一种移动平台的程序员创建出令人叹服的移动应用。
如果你有兴趣了解可汗学院 React Native 之旅的全部细节,不要错过 Clark 的文章。
原文链接:
Pros and Cons of Migrating to React Native at Khan Academy
译者简介:
冬雨,小小技术宅一枚,从事研发过程改进及质量改进方面的工作,关注编程、软件工程、敏捷、DevOps、云计算等领域,非常乐意将国外新鲜的 IT 资讯和深度技术文章翻译分享给大家,已翻译出版《 深入敏捷测试 》、《 持续交付实战 》。
评论