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

2020 年 8 月 04 日

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


2020 年 8 月 04 日 15:361193

评论

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

Git分支管理策略及简单操作

王坤祥

git git flow

国家央行数字货币的优势与挑战

CECBC区块链专委会

数字货币 央行 商业银行

5大法则助你 成为更出色的开发者

三钻

学习 编程 敏捷开发 程序员成长 经验分享

docker-compose构建springcloud微服务项目

xcbeyond

Java Docker Docker-compose springboot

【第十周】学习笔记

Aldaron

你还应该知道的哈希冲突解决策略

vivo互联网技术

哈希冲突

写给想学和在学编程的你们,学习编程的7个好处

三钻

学习 软件开发 编程之路 程序员成长 经验分享

前端必看的8个HTML+CSS技巧

三钻

Java html html5 css3 前端

Kafka实战宝典:如何跨机房传输数据

数据社

大数据 kafka 跨机房

DSN 主流项目调研 0——IPFS&&Filecoin白皮书总结

AIbot

区块链 分布式存储 分布式文件存储 IPFS Filecoin

你真的懂怎么写`服务层`吗?

三钻

php 后端 服务 程序员成长 架构思维

DSN主流项目调研1——Storj和Arweave的简介

AIbot

分布式存储 区块链+ 分布式文件存储 Storj Arweave

IDEA直连服务器,进行项目Docker部署,实现一键部署、启动

xcbeyond

Java Docker idea插件

华章25周年活动——《迁移学习》限量5折!

华章IT

CentOS7 下Docker安装、启动

xcbeyond

Docker 软件安装

【第十周作业】

Aldaron

优质单元测试的十大标准,你有遵循吗?

项目管理 单元测试 自动化测试

聊聊微前端的原理和实践

vivo互联网技术

前端 微前端

一文道尽“表驱动法”

flyer0126

编码 表驱动法

区块链技术在银行业的运用

CECBC区块链专委会

区块链 信息安全 金融

更优雅的编写JavaScript

三钻

Java 前端 程序员素养 经验分享 ES6

分布式定时任务调度框架实践

vivo互联网技术

分布式 大数据任务调度 框架

LeaRun快速开发平台,快速开发.net/java项目

力软.net/java开发平台

用“易于改编”原则,提升编程水平,写出更好的代码

三钻

前端 后端 程序员成长 经验分享 编程风格

图解JavaScript——代码实现(六种异步方案,重点是Promise、Async、发布/订阅原理实现,真香)

执鸢者

原理 异步 Promise Async

VSCode插件大全|VSCode高级玩家之第二篇

三钻

程序员人生 vscode 编辑器 插件 技巧

Kafka实战宝典:一文带解决Kafka常见故障处理

数据社

kafka 监控

好玩又好用,一款轻松就可以实现音视频的Demo

anyRTC开发者

音视频 移动互联网 RTC anyRTC Demo

6个高效学习编程的方法

三钻

学习 程序人生 前端 后端

带你体验Vue2和Vue3开发组件有什么区别

三钻

Java Vue 前端 Vue3 React

VSCode常用快捷键大全|VSCode高级玩家宝典之第一篇

三钻

学习 效率工具 程序员人生 vscode 快捷键

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