原文链接:nearform.com/digital-com…
作者:Lorenzo Sciandra
React Native重构计划始于2018年,这是Facebook为解决该跨平台移动解决方案长期存在的问题所进行的重大努力。
本系列文章将概述构成React Native新架构的主要元素。为使说明尽可能通俗易懂,我们将避免展示代码,并分享我们对这一新实现的兴奋之情。
在最终篇中,我们将解析首篇文章中展示的旧架构图的最后一个模块:
这部分实际上并未直接体现在代码层面——多数变更源于先前组件的重构方式:
从更概念化的层面而言,React Native 旨在实现对原生平台的"无关性"。正是这一核心特性催生了 react-native-web、react-native-windows 等第三方实现方案。
此外,Facebook 团队既不拥有 iOS 也不拥有 Android 平台,因此在最后一个模块中无法采取深入探究平台行为的"垂直"方式;但可以通过"水平"方式缩减涉及的 React Native 代码库总量。
这项工作被称为“精简核心”,是重构过程中最需要社区协助的部分。从宏观层面看,该方案旨在将当前存在于React Native主代码库中的代码提取至独立仓库。
此举主要有两大益处:既能减轻生成的应用程序体积,又能确保非Facebook直接使用的组件获得妥善维护。由于修改Facebook自有代码的复杂性,此类组件在过去往往得不到充分关注。
因此,若将第四个模块替换并据此绘制全新React Native架构图,结果如下:
如您所见,Facebook团队这项复杂的工作影响了React Native运作的诸多层面,却未对开发者造成显著影响。这绝非易事!
新架构带来的优势将显著提升基于React Native开发的应用程序,其质量与性能与"纯原生应用"的差距将日益缩小。
这些变更何时能准备就绪并投入使用?这项庞大的工作预计将在2019年第四季度或2020年第一季度完成,但具体日期尚未确定。鉴于Facebook团队正公开推进这项重构工作,您可随时关注最新进展。截至本文撰写时,我们可将其总结如下:
- 新 React = 16.8 版本自 0.59 版起支持(注:Suspense 功能自 16.6 版起部分可用)
- 代码生成 = 开发工作在主仓库进行(专项讨论)
- JSI = 已部署至主分支,自 0.59 版起可用(但目前尚无直接使用指南)(专项讨论)
- TurboModules = 主仓库开发进行中(专项讨论)
- Fabric = 主仓库开发进行中(专项讨论)
- 精简核心 = 持续推进中,详情可参阅此问题(专项讨论)
对于上述大部分要点,我已在GitHub上创建了专属讨论页并附上最新信息链接,请随时关注获取最新动态!
总而言之,我们认为此次更新为React Native带来了多项重大改进。此刻正是React Native开发者大展身手的激动时刻,希望本系列文章能助您更好地把握即将到来的变革浪潮。
若您认同这些观点,请务必将本文分享给同行开发者,或通过推特(已开放)提出后续问题。
想必您已感受到,本系列博客旨在激发大家对这些变革的期待——它们将如何赋能您的代码库,且无需重写代码。
快上这趟热潮列车吧!
系列其他篇章:
特别鸣谢Formidable团队的Kadi和Carlos审阅本文系列确保内容精准,感谢Mark提供图表设计,以及Amy完成编辑工作。特别致谢Facebook React Native团队的Eli White和Rick Hanlon校对初稿并确保内容准确无误。