跳到主要内容

React Native 团队原则

·5 分钟阅读
Eli White
Eli White
软件工程师 @ Meta (元宇宙)

Facebook 的 React Native 团队遵循一些原则,这些原则有助于确定我们如何优先处理 React Native 的工作。这些原则专门代表我们的团队,并不一定代表 React Native 社区中的每个利益相关者。我们在此分享这些原则,以更透明地说明是什么驱动我们、我们如何做出决策以及我们如何集中精力。

原生体验

我们对 React Native 的首要任务是符合人们对每个平台的期望。这就是 React Native 渲染到平台原生组件的原因。我们重视原生外观和体验,而不是跨平台一致性。

例如,React Native 中的 TextInput 在 iOS 上渲染为 UITextField。这确保了与密码管理器和键盘控件的集成开箱即用。通过使用平台原生组件,React Native 应用也能够与 Android 和 iOS 新版本的设计和行为更改保持同步。

为了匹配原生应用的外观和体验,我们还必须匹配它们的性能。这是我们集中最雄心勃勃努力的地方。例如,Facebook 创建了 Hermes,这是一个从头开始为 Android 上的 React Native 构建的新的 JavaScript 引擎。Hermes 显着提高了 React Native 应用的启动时间。我们还在进行重大的架构更改,以优化线程模型,并使 React Native 更容易与原生代码互操作。

大规模

Facebook 应用中有数百个屏幕使用 React Native 实现。Facebook 应用被数十亿人在各种设备上使用。这就是为什么我们投资于大规模的最具挑战性的问题。

在我们的应用中部署 React Native 使我们能够识别在较小规模下看不到的问题。例如,Facebook 专注于提高从最新的 iPhone 到许多老一代 Android 设备的广泛设备范围内的性能。这种关注为我们的架构项目(如 Hermes、Fabric 和 TurboModules)提供了信息。

我们已经证明 React Native 也可以扩展到大型组织。当数百名开发人员在同一个应用上工作时,逐步采用是必须的。这就是为什么我们确保 React Native 可以一次采用一个屏幕。很快,我们将更进一步,使现有原生屏幕的单个原生视图能够迁移到 React Native。

专注于大规模意味着我们的团队目前没有做很多事情。例如,我们的团队不推动 React Native 在行业中的采用。我们也不会积极为我们在大规模下看不到的问题构建解决方案。我们很自豪我们有很多合作伙伴和核心贡献者,他们能够专注于社区的那些重要领域。

开发者效率

出色的用户体验是迭代创建的。在运行的应用程序中看到代码更改的结果应该只需要几秒钟。React Native 的架构使其能够在开发期间提供近乎即时的反馈。

我们经常听到团队反馈,采用 React Native 显着提高了他们的开发效率。这些团队发现,开发期间的即时反馈使得尝试不同的想法和添加额外的润色变得容易得多,因为他们不必为每个小更改中断他们的编码会话。当我们更改 React Native 时,我们确保保留开发者体验的这一品质。

即时反馈不是 React Native 提高开发者效率的唯一方式。团队可以利用快速增长的高质量开源软件包生态系统。团队还可以在 Android、iOS 和 Web 之间共享业务逻辑。这有助于他们更快地发布更新,并减少平台团队之间的组织孤岛。

每个平台

当我们在 2014 年推出 React Native 时,我们用我们的座右铭“一次学习,随处编写”来介绍它——我们指的是任何地方开发者应该能够接触到尽可能多的人,而不受设备型号或操作系统的限制。

React Native 针对非常不同的平台,包括移动设备、桌面设备、Web、电视、VR、游戏机等等。我们希望在每个平台上实现丰富的体验,而不是要求开发人员为最低公分母构建。为了实现这一目标,我们专注于支持每个平台的独特功能。这包括从不同的输入机制(例如触摸、笔、鼠标)到根本不同的消费体验,如 VR 中的 3D 环境。

这一原则促使我们决定在跨平台 C++ 中实现 React Native 的新核心架构,以促进跨平台的一致性。我们还在改进针对其他平台维护者(如微软的 Windows 和 macOS)的公共接口。我们努力使任何平台都能够支持 React Native。

声明式 UI

我们不相信在每个平台上部署完全相同的用户界面,我们相信使用相同的声明式编程模型公开每个平台的独特功能。我们的声明式编程模型是 React。

根据我们的经验,React 推广的单向数据流使应用程序更容易理解。我们更喜欢将屏幕表示为声明式组件的组合,而不是命令式管理的视图。React 在 Web 上的成功以及新的原生 Android 和 iOS 框架的方向表明,行业也已经接受了声明式 UI。

React 普及了声明式用户界面。然而,仍然存在许多 React 独特定位可以解决的未解决问题。React Native 将继续在 React 的创新基础上构建,并保持在声明式用户界面运动的最前沿。