2017年,可汗学院( https://blog.khanacademy.org)开始在iOS和Android应用中使用React Native。到了今年,这一迁移工程终于来到了终点,可汗学院应用中的所有页面都转到了React Native上。
2017年,可汗学院之所以开始这一实验,主要是基于以下考虑:
- iOS和Android应用的设计几乎是一致的,交互设计、功能和内容都没什么区别。
- 维护两个代码库是很困难的事情,尤其是这两个代码库还具有不同的数据设计、错误和开发新功能时的考虑要素。
- 学院的移动开发团队很小,因此迁移工作不会涉及大批工程师。
- 学院的网站已经在使用React了,因此学院的开发团队具备相应的专业知识,以及帮助迁移的概念和工具。
下面具体讲一下维护两个代码库所要面临的挑战。
- 不同的平台上会出现不同的错误。当然,React Native也会有这种情况,但是出现概率就小得多了。
- 开发新功能需要针对两个平台分别考虑设计、工程和测试工作。这意味着你至少需要两名工程师(iOS和Android),并且他们最好共同工作——对于像可汗学院这样小规模的团队来说这是很大的负担。
- 功能和设计一旦构建好后就很难调整,因为每次调整都需要在两个平台上各来一次。
- 平台之间的架构差异很大。可汗学院的iOS代码库比Android代码库大四岁。iOS有Swift、ReactiveCocoa、Cartography和CoreData。Android则有自己的一组依赖项和数据流设计。这些差异累加起来,让平台之间的功能复用变得很复杂,对比两个平台的代码也不容易,于是团队相当于被平台分割成了两部分。
原文链接:【https://www.infoq.cn/article/mSRZT6XOgIB8glQfH2lK】。未经作者许可,禁止转载。