React Native 团队原则
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 的核心,以促进跨平台的统一。我们还在改进针对其他平台维护者(如 Microsoft 的 Windows 和 macOS)的公共接口。我们努力使任何平台都能支持 React Native。
声明式 UI
我们不相信在每个平台上部署完全相同的用户界面,我们相信**使用相同的声明式编程模型来展现每个平台的独特功能**。我们的声明式编程模型是 React。
根据我们的经验,React 推广的单向数据流使应用更容易理解。我们更倾向于将屏幕表示为声明式组件的组合,而不是由命令式管理的视图。React 在 Web 上的成功以及新的原生 Android 和 iOS 框架的方向表明,业界也已经接受了声明式 UI。
React 推广了声明式用户界面。然而,仍然存在许多 React 独具优势可以解决的未解决问题。React Native 将继续在 React 的创新之上构建,并保持在声明式用户界面运动的前沿。