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

发布于:2020 年 8 月 4 日 15:36

可汗学院迁向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 资讯和深度技术文章翻译分享给大家,已翻译出版《 深入敏捷测试 》、《 持续交付实战 》。

阅读数:1138 发布于:2020 年 8 月 4 日 15:36

更多 前端、移动、iOS 相关课程,可下载【 极客时间 】App 免费领取 >

评论

发布
暂无评论
  • 第 185 讲 | 狼叔:2019 年前端和 Node 的未来—大前端篇(下)

    今天继续分享移动端局面、多端拉齐的必然性等内容,以及2019年不可忽视的TypeScript和WebAssembly这两大技术。

    2019 年 3 月 12 日

  • 桌面上的 Flutter:Electron 又多了个对手

    在进入真实的原生桌面应用程序之前,先让我们看看在桌面上运行的Flutter可以为开发移动设备的人们带来哪些好处。

    2018 年 12 月 21 日

  • 使用 Rekit 开发可扩展的前端应用

    本次分享介绍一个全新的React专用IDE:Rekit,是如何解决当前Web开发中遇到的问题,以及如何利用Rekit来开发大型React Web应用。

    2019 年 9 月 3 日

  • 结束语 | 移动开发的今天和明天

    不知不觉,“Android开发高手课”上线更新到现在,已经陪伴了大家140多天,转眼间到了不得不说“再见”的时候。

    2019 年 4 月 16 日

  • 使用 Flutter 快速构建集美观与高性能于一体的移动应用

    2018 年 9 月 12 日

  • Auto Layout 是怎么进行自动布局的,性能如何?

    在 iOS 12 上,苹果公司用到了Cassowary算法的界面更新策略,使得 Auto Layout 的性能得到了大幅提升。

    2019 年 3 月 16 日

  • Netflix 为什么选择使用 React 来提升用户体验

    为了提升用户体验,在线影片租赁提供商Netflix正使用由Facebook开源的React库对其桌面和移动平台进行重大修改。近日,他们在官方博客上发表了一篇文章,阐述了选择React的三个关键因素。

    2015 年 2 月 3 日

  • WalmartLabs 使用 React Native 的体验

    React Native是Facebook于2015年开源的跨平台移动应用开发框架,是Facebook早先开源的UI框架React在原生移动应用平台的衍生产物,目前支持iOS和Android两大平台。React Native使用Javascript语言,类似于HTML的JSX,以及CSS来开发移动应用,因此熟悉Web前端开发的技术人员只需很少的学习就可以进入移动应用开发领域。 React Native运行时包含一个原生主线程和一个JS线程,JS线程执行JS代码,负责界面布局和业务逻辑处理,原生线程负责界面渲染和原生功能执行。不久前,WalmartLabs的React Native团队成员Matt Bresnan、M.K.Safi、Sanket Patel和Keerti合著了一篇文章,为我们分享了WalmartLabs使用React Native的体验。

    2017 年 2 月 3 日

  • 如何正确选型,React Native 还是 Native?

    如果你想构建属于你自己的 App,那么究竟要怎么选型呢?是选择 React Native 还是原生应用开发?

    2019 年 6 月 19 日

  • Instagram 性能优化之道

    在@scale 2014大会上,Instagram工程师Tyler Kieft做了题为《普通安卓设备上的Instagram》的演讲,介绍其团队如何针对普通手机(相对高端手机而言)重新思考Instagram的设计。Highscalability.com据此报道了Instagram的性能优化之道。

    2014 年 11 月 5 日