知海

FAQ:通用问题

graphql-github-io-zh-Hans常见问题

FAQ:通用问题

GraphQL 是前端还是后端?

两者都是。GraphQL 规范了如何在客户端和服务器之间交换信息(大图景)。这包括服务器如何指明可用的数据和操作、客户端应该如何格式化请求、服务器应该如何执行这些查询,以及客户端将收到何种响应

GraphQL 使用 HTTP 吗?

使用,GraphQL 通常通过 HTTP 提供服务。这在很大程度上是因为 HTTP 协议在我们的行业中无处不在。而且,你可以通过发出一个 HTTP 请求来尝试 GraphQL,这也让 HTTP 成为常见选择。关于如何搭建通过 HTTP 运行的 GraphQL 服务器,请参阅我们的 Serving over HTTP 文档

虽然 HTTP 是客户端与服务器协议中最常见的选择,但并不是唯一的选择。GraphQL 与传输层无关。例如,你可以使用 WebSockets 来提供 GraphQL 订阅(subscriptions),而不是通过 HTTP 消费实时数据。

GraphQL 如何影响我的产品性能?

在典型的 GraphQL 后端中,每个类型上的每个字段都有一个专注的、单一用途的函数来解析该值。此外,GraphQL 不是在客户端处理数据批量操作,而是将该逻辑移到服务器端。因此,GraphQL 具有一些内在的性能优势,例如最大限度地减少过度获取(over-fetching),以及减少与服务器的往返次数

在构建 GraphQL 实现时,还应当考虑其他性能因素。例如,GraphQL 服务可能会变得“啰嗦”,反复从数据库加载数据。这个问题通常可以通过实现批处理技术使用 DataLoader 之类的工具来解决。

什么是 GraphQL 客户端,我为什么要使用一个?

GraphQL 客户端可以帮助你处理对 GraphQL 服务器查询、变更订阅。它们利用 GraphQL API 的底层结构来自动化某些流程,包括批处理、UI 更新、构建时 schema 校验等。

你可以在我们的 Code 页面找到多种语言的 GraphQL 客户端列表。How To GraphQL 还提供了关于这些优势的深入说明。

不过,使用 GraphQL 并不一定需要特定客户端。你可以先从普通 HTTP 客户端发起 GraphQL 请求,随着应用复杂度的增长,再切换到为 GraphQL 优化的客户端。

GraphQL 会取代 ORM 吗?

不会。GraphQL 是一种通常用于远程客户端-服务器通信的规范。它与底层使用的数据源无关,并且不实现对象关系映射技术。但也存在专门为 GraphQL 构建的 ORM。其中一些列在我们的 Code 页面的 Services 部分

GraphQL 归 Facebook 所有吗?

不,GraphQL 由 GraphQL 基金会治理。

话虽如此,该规范最初是在 Facebook 开发的,并且 Facebook 是 GraphQL 基金会的成员。你可能会注意到,我们的一些 GitHub 仓库仍然列有 Facebook Inc. 的许可证。我们正在更新这些仓库,并已将主要项目(如 GraphiQLDataLoader)转换为新的版权声明:"Copyright (c) 2020 GraphQL Contributors."

谁在背后支持 GraphQL?

很多人!GraphQL 规范及其所有相关项目都是开源的,所以欢迎任何人贡献。不过,这些仓库背后有相应的组织结构,用于解决社区内的冲突并指导技术决策。

GraphQL 基金会为 GraphQL 提供大部分监督。它由来自数十家公司的代表组成。

此外,GraphQL 基金会还管理每月一次的线上 GraphQL 工作组(WG)会议。这些会议旨在汇集常用 GraphQL 库与工具的维护者,以及 GraphQL 社区的重要贡献者。工作组会议完全开放,任何人都可以加入,并可以向议程提出议题。

2020 年 11 月的工作组会议上,GraphQL 宣布将成立技术指导委员会(TSC)。更多相关信息即将发布。

如果这让你感到困惑,别担心——这里涉及的内容很多。想要更直观、更高层的概览,请查看 GraphQL Landscape

什么是 GraphQL 基金会?

GraphQL 基金会是一个为 GraphQL 提供治理的中立性基金会,包括对开源仓库、资金、活动等进行供应商中立的监督。它隶属于 Linux 基金会,由来自数十家公司的代表组成。其理念是成为 GraphQL 社区公正、开放的家园。

你可以访问 foundation.graphql.org 了解更多信息。

帮助我们改进文档

发现翻译问题或内容错误?请告诉我们。