Facebook的Reaction Native团队遵循一些原则,这些原则有助于确定我们在Reaction Native上的工作优先顺序。这些原则具体代表了我们的团队,并不一定代表Reaction原住民社区中的每个利益相关者。我们在这里分享这些原则是为了让我们更透明地了解是什么驱使我们,我们如何做出决定,以及我们如何集中精力。
对于Reaction Native,我们的首要任务是满足人们对每个平台的期望。这就是为什么将原生呈现反应为平台基元的原因。与跨平台一致性相比,我们更看重原生外观。
例如,Reaction Native中的TextInput呈现为iOS上的UITextField。这确保了与密码管理器和键盘控件的集成开箱即用。通过使用平台原语,Reaction原生应用程序还能够及时了解新发布的Android和iOS的设计和行为变化。
为了与本地应用程序的外观和感觉相匹配,我们还必须与它们的性能相匹配。这是我们集中最雄心勃勃的努力的地方。例如,Facebook创建了Hermes,这是一个新的JavaScript引擎,从头开始为Android上的Reaction Native构建。爱马仕显著提高了Reaction Native应用的启动时间。我们还在进行重大的架构更改,以优化线程模型,并使Reaction Native更易于与本机代码进行互操作。
Facebook应用程序中的数百个屏幕都是用Reaction Native实现的。Facebook的这款应用程序有数十亿人在各种设备上使用。这就是为什么我们投资于规模最具挑战性的问题。
在我们的应用程序中部署Reaction Native可以让我们识别在较小范围内看不到的问题。例如,Facebook专注于提高从最新款iPhone到许多老款Android设备的各种设备的性能。这一重点为我们的架构项目(如Hermes、Fabric和TurboModules)提供了信息。
我们已经证明,Reaction Native也可以扩展到大型组织。当数百名开发人员在同一个应用程序上工作时,逐步采用是必须的。这就是为什么我们确保“原生反应”可以一次只采用一个屏幕的原因。很快,我们将更进一步,支持迁移现有原生屏幕的单个原生视图以响应原生。
专注于大规模意味着我们的团队目前没有致力于很多事情。例如,我们的团队并没有推动业界采用Reaction Native。我们也不会积极地为我们看不到规模的问题构建解决方案。我们感到自豪的是,我们有许多合作伙伴和核心贡献者,他们能够专注于社区的这些重要领域。
出色的用户体验是以迭代方式创建的。在运行的应用程序中查看代码更改的结果应该只需几秒钟。Reaction Native的架构使其能够在开发过程中提供近乎即时的反馈。
我们经常从团队那里听到,采用Reaction Native显著提高了他们的开发速度。这些团队发现,开发过程中的即时反馈使他们更容易尝试不同的想法并添加额外的改进,因为他们不必因为每一个小的更改而中断他们的编码过程。当我们对原生反应进行更改时,我们确保保持开发人员体验的这一质量。
即时反馈并不是Reaction Native提高开发速度的唯一方式。团队可以很容易地利用快速增长的高质量开放源码包生态系统。团队还可以在Android、iOS和Web之间共享业务逻辑。这有助于他们更快地发送更新,并减少平台团队之间的组织孤岛。
当我们在2014年推出Reaction Native时,我们提出了我们的座右铭“一次学习,随时随地写”--我们指的是任何地方。开发者应该能够接触到尽可能多的人,而不受设备型号或操作系统的限制。
Reaction Native瞄准非常不同的平台,包括移动、台式机、网络、电视、VR、游戏机等。我们希望在每个平台上实现丰富的体验,而不是要求开发人员为最低公分母而构建。要实现这一点,我们将重点放在支持每个平台的独特功能上。这包括从不同的输入机制(如触摸、笔、鼠标)到完全不同的消费体验,如VR中的3D环境。
这一原则使我们决定用跨平台的C++实现REACTION Native的新核心架构,以促进跨平台的平等性。我们还在改进针对其他平台维护者的公共界面,比如微软的Windows和MacOS。我们努力使任何平台都能支持REPACT Native。
我们不相信在每个平台上部署完全相同的用户界面,我们相信用相同的声明性编程模型公开每个平台的独特功能。我们声明性编程模型是Reaction。
根据我们的经验,Reaction普及的单向数据流使应用程序更容易理解。我们更喜欢将屏幕表示为声明性组件的组合,而不是强制托管的视图。Reaction在网络上的成功,以及新的原生Android和iOS框架的发展方向表明,该行业也已经接受了声明式UI。
反应普及的声明性用户界面。然而,仍然有许多问题没有解决,反应是独特的定位来解决。REACTION Native将继续建立在REACT的创新之上,并保持在声明性用户界面运动的前沿。