Graphql 阿波罗,继电器和x2026;它们如何组合在一起?

Graphql 阿波罗,继电器和x2026;它们如何组合在一起?,graphql,Graphql,在尝试开始使用GraphQL时,您会遇到许多新术语:有些术语与GraphQL本身的概念有关(突变、订阅等),但它周围还有一个完整的生态系统,不幸的是,它并不总是与GraphQL本身明确分开。然而,我发现很难分辨一件事在哪里结束,另一件事从哪里开始,区别是什么,何时需要什么 因此,列举其中几个术语: 图形ql 阿波罗 阿波罗客户机 接力 你能用几句话解释一下这些东西(除了GraphQL)是什么,它们有什么好处,它们是如何相互联系的(或者没有)?还有,这里缺少哪些重要的工具/概念?GraphQL

在尝试开始使用GraphQL时,您会遇到许多新术语:有些术语与GraphQL本身的概念有关(突变、订阅等),但它周围还有一个完整的生态系统,不幸的是,它并不总是与GraphQL本身明确分开。然而,我发现很难分辨一件事在哪里结束,另一件事从哪里开始,区别是什么,何时需要什么

因此,列举其中几个术语:

  • 图形ql
  • 阿波罗
  • 阿波罗客户机
  • 接力
你能用几句话解释一下这些东西(除了GraphQL)是什么,它们有什么好处,它们是如何相互联系的(或者没有)?还有,这里缺少哪些重要的工具/概念?

GraphQL语言 GraphQL是一种查询语言。它有一个定义语言、模式以及GraphQL查询执行的函数。学习这些东西是一个很好的起点,完全不依赖于编程语言

GraphQL实现 然后有不同语言的不同GraphQL实现,允许您创建模式并描述查询如何解析为值。通常,这些实现根据您定义的模式验证查询并接管执行。几乎所有JavaScript生态系统都会使用,但也有

GraphQL服务器 GraphQL也是传输层不可知的。这意味着GraphQL实现通常不附带HTTP服务器。但我们经常使用HTTP来进行GraphQL查询,这就是为什么有些库使用这些实现,并提供了一种简单的方法来在顶部创建HTTP服务器(例如,通过为HTTP框架提供中间件或与整个服务器一起提供)。我认为在JavaScript中,几乎每个人都在使用它,因为它带来了更多的功能,并且与Apollo生态系统和Apollo公司提供的服务紧密集成

Apollo Server还非常普及了定义GraphQLAPI的SDL(模式定义语言)方法。使用SDL方法,GraphQL模式不是使用代码创建的,而是通过使用特殊语言(也是GraphQL规范的一部分)定义模式,并从该定义中分别定义单个解析器函数来创建的。这让您很快就开始了,但我的感觉是,对于大型API来说,它不是很受欢迎。但您可以简单地将GraphQL.js模式传递给Apollo服务器

GraphQL客户端 当服务器运行时,我们可以使用简单的HTTP客户端(如浏览器的
fetch
功能)对服务器进行查询。这工作得很好,但是当我们使用一个在需要时支持缓存自动查询抓取的客户机时,GraphQL的功能确实非常强大。通过这种方式,我们可以到达声明性数据获取/数据依赖的希望之地。Facebook已经发布了自己的客户端库,该库专为大型网络企业的独特需求而设计。该库被调用,新版本(与旧版本分离)通常被引用为现代中继。但是Relay相对来说比较复杂,需要一个特定的构建链,所以当Apollo发布了一个轻量级的客户端替代方案,即。Apollo客户端多年来开发了很多,现在支持很多配置。此外,
apollo react
允许将apollo客户端与react一起使用,而Relay是专门为react而构建的。随着阿波罗号在过去几年中体重的增加,强大实验室的人们创造了一个新的空间

结论 您可以同时使用所有这些技术。许多人只是选择一起使用阿波罗生态系统,这可能是一个可靠的选择。如果您以前使用过Redux,那么使用Apollo客户端或Urql您可能会感到宾至如归。如果您正在构建一个具有性能焦点的大型应用程序,您应该考虑中继,并理解这会对构建图形格式的方式带来什么影响。