Categories
程式開發

可汗学院迁向React Native的利与弊


经过了两年的时间,可汗学院将他们的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资讯和深度技术文章翻译分享给大家,已翻译出版《 深入敏捷测试 》、《 持续交付实战 》。