跳至主要内容
版本:v18.0.0

架构概述

本文档,以及 运行时架构编译器架构,描述了 Relay 的高级架构。目标受众包括有兴趣为 Relay 做出贡献的开发人员、希望利用 Relay 的构建块来创建更高层 API 的开发人员,以及任何有兴趣了解 Relay 内部机制的人。对于希望学习如何使用 Relay 来构建产品的开发人员,引导游览 是最好的资源。

核心模块

Relay 由三个核心部分组成

  • Relay 编译器:一个 GraphQL 到 GraphQL 优化的编译器,提供用于转换和优化查询以及生成构建工件的一般实用程序。编译器的一项新功能是它通过使使用这些指令的代码轻松地翻译成标准的、符合规范的 GraphQL 来促进对新 GraphQL 功能(以自定义指令的形式)的实验。
  • Relay 运行时:一个功能齐全、高性能的 GraphQL 运行时,可用于构建更高层的客户端 API。运行时提供规范化的对象缓存、优化的“写入”和“读取”操作、用于增量获取字段数据的通用抽象(例如用于分页)、用于删除未引用缓存条目的垃圾回收、具有任意逻辑的乐观变异、支持构建订阅和实时查询等等。
  • React/Relay:一个将 Relay 运行时与 React 集成的高级产品 API。对于大多数产品开发人员来说,这是 Relay 的主要公共接口,它提供了用于获取查询数据的 API 或定义可重用组件的数据依赖关系(例如 useFragment)。

请注意,这些模块是松散耦合的。例如,编译器以一种定义明确的格式发出查询的表示,运行时使用该格式,这样就可以根据需要交换出编译器实现。React/Relay 仅依赖于运行时的记录良好的公共接口,这样就可以交换出实际的实现。我们希望这种松散耦合将允许社区探索新的用例,例如使用 Relay 运行时开发专门的产品 API 或将运行时与除 React 之外的视图库集成。


此页面是否有用?

帮助我们通过 回答几个快速问题来使网站变得更好.