发布于 2026-01-05 9 阅读
0

学习 React 和 GraphQL 客户端的最佳资源:Apollo Client Relay · 将 AWS AppSync 与 JavaScript 应用结合使用 · 教程 · 开发者工具:apollo-cache-updater、Apollo CLI、eslint-plugin-graphql

学习 React 和 GraphQL 的最佳资源

客户

Apollo客户端

React Apollo

接力赛GitHub 许可证 npm 版本

将 AWS AppSync 与 JavaScript 应用配合使用勒纳

教程

开发者工具

apollo-cache-updater

Apollo CLI

eslint-plugin-graphql

在查看了《2018 年 JavaScript 发展现状调查》的结果后,我决定整理一份关于两种现代热门技术的顶级资源列表。该调查共有 2 万名用户参与。当然,React 是前端框架中最受欢迎的。

GraphQL是目前最受学习者欢迎的技术。

客户

  • Apollo:Apollo Client 是一个由社区驱动的 GraphQL 客户端,支持 React、JavaScript 和原生平台。

GitHub 标志 apollographql / apollo-client

🚀 适用于所有 UI 框架和 GraphQL 服务器的全功能、生产就绪的缓存 GraphQL 客户端。

Apollo客户端

Apollo客户端

npm 版本 构建状态 加入社区 加入我们的 Discord 服务器



公告:
10 月 8 日至 10 日,GraphQL Summit 将在纽约举行,届时将有 1000 多位工程师齐聚一堂,参与演讲、研讨会和在线答疑。点击此处获取参会证 ->


Apollo Client 是一款功能齐全的 GraphQL 缓存客户端,集成了 React、Angular 等多种框架。它使您可以轻松构建通过 GraphQL 获取数据的 UI 组件。

☑️ Apollo客户端用户调查
您最喜欢 Apollo Client 的哪些方面?有哪些需要改进的地方?请花一分钟时间填写一份调查问卷告诉我们。您的反馈将帮助我们了解 Apollo Client 的使用情况,从而更好地为您服务。

文档

所有 Apollo Client 文档,包括 React 集成文章和实用示例,都可以在以下网址找到:
https://www.apollographql.com/docs/react/

Apollo Client API 参考文档位于:
https://www.apollographql.com/docs/react/api/apollo-client/

通过 Apollo 官方学习平台 Odyssey 上的自学实践培训,学习如何使用 Apollo Client:
https://odyssey.apollographql.com/

维护者

姓名 用户名
本·纽曼 @benjamn
阿莱西亚·贝利萨里奥 @alessbell
杰夫·奥里马

GitHub 标志 apollographql / react-apollo

♻️ Apollo Client 的 React 集成

React Apollo

React Apollo

npm 版本 构建状态 加入Spectrum社区


⚠️ 此项目已弃用。 ⚠️

请注意,4.0.0 是所有 React Apollo 包的最终版本。React Apollo 的功能现在可直接从@apollo/client3 及更高版本获取。虽然继续使用这些@apollo/react-X包仍然有效,但我们建议您改用以下导入语句@apollo/client

  • 旧:@apollo/react-components--> 新:@apollo/client/react/components
  • 旧:@apollo/react-hoc--> 新:@apollo/client/react/hoc
  • 旧:@apollo/react-ssr--> 新:@apollo/client/react/ssr
  • 旧:@apollo/react-testing--> 新:@apollo/client/testing
  • 旧:@apollo/react-hooks--> 新:@apollo/client

今后,所有 Apollo + React 的问题/拉取请求都应在apollo-client代码库中提交。更多详情请参阅Apollo Client 迁移指南。


React Apollo 允许您从 GraphQL 服务器获取数据,并使用 React 框架构建复杂且响应式的用户界面。React Apollo 可以用于任何可以使用 React 的场景,例如浏览器、React Native 或 Node.js 等。

  • Relay Modern:一个用于构建数据驱动型 React 应用的 JavaScript 框架

GitHub 标志 脸书/中继

Relay 是一个用于构建数据驱动型 React 应用程序的 JavaScript 框架。

Relay 是一个用于构建数据驱动型 React 应用程序的 JavaScript 框架。

  • 声明式:再也不用使用命令式 API 与数据存储通信了。只需使用 GraphQL 声明数据需求,Relay 就会负责确定如何以及何时获取数据。
  • 查询与依赖它们的视图并存,方便您轻松理解应用程序的运行机制。Relay 将查询聚合为高效的网络请求,仅获取所需内容
  • 变更: Relay 允许您使用 GraphQL mutations 变更客户端和服务器上的数据,并提供自动数据一致性、乐观更新和错误处理。

了解如何在您自己的项目中使用 Relay

例子

relay -examples仓库包含TodoMVC的一个实现。要试用它:

git clone https://github.com/relayjs/relay-examples.git
cd relay-examples/todo
yarn
yarn build
yarn start

然后,只需将浏览器指向http://localhost:3000.

贡献

我们非常欢迎提交 pull request,了解如何操作……

  • AppSync:用于离线、同步和 Sigv4 的 JavaScript GraphQL 库,支持 React Native。

GitHub 标志 awslabs / aws-mobile-appsync-sdk-js

用于离线、同步和 Sigv4 的 JavaScript 库文件,包含对 React Native 的支持。

将 AWS AppSync 与 JavaScript 应用配合使用勒纳

AWS AppSync

AWS AppSync是一项完全托管的服务,它通过安全地连接到 AWS DynamoDB、Lambda 等数据源,简化了 GraphQL API 的开发。

您可以使用任何 HTTP 或 GraphQL 客户端连接到 AppSync 上的 GraphQL API。

对于前端 Web 和移动开发,我们建议使用AWS Amplify 库,该库针对连接到 AppSync 后端进行了优化。

正在寻找适用于…的 AWS AppSync SDK

教程





开发者工具

GitHub 标志 graphql / graphql-playground

🎮 GraphQL IDE,带来更佳的开发工作流程(GraphQL 订阅、交互式文档和协作)

npm 版本 GraphQL

安全警告:该程序及其所有四个 (4) 个中间件依赖项存在graphql-playground-htmlXSS反射攻击漏洞,该漏洞仅针对未经清理的用户输入字符串。此漏洞已在 [版本号] 中修复更多信息请参阅CVE-2020-4038。graphql-playground-html@1.6.22graphql-playground-html@^1.6.22

该仓库的未来发展方向详情请参见此问题。


GraphQL IDE,实现更好的开发工作流程(GraphQL 订阅、交互式文档和协作)。

安装

$ brew install --cask graphql-playground
Enter fullscreen mode Exit fullscreen mode

特征

  • ✨ 上下文感知自动补全和错误高亮显示
  • 📚 交互式多列文档(支持键盘输入)
  • ⚡️支持实时GraphQL订阅
  • ⚙ 支持 GraphQL 配置,可配置多个项目和端点
  • 🚥 Apollo追踪支持

安全详情

注意:只有未经清理的用户输入才会受到最近报道的 XSS 反射攻击。

影响

受影响的是所有未经清理的用户自定义输入: - renderPlaygroundPage()- koaPlayground()- expressPlayground()- koaPlayground()-`lambdaPlayground()

如果您使用了静态值,例如graphql-playground-electron……

  • GraphiQL Online:GraphiQL 的在线版本,具有可配置的端点和标头。
  • GraphQL 编辑器:一个可视化的 GraphQL 编辑器,允许您可视化 GraphQL 模式并从模式创建虚假后端。

  • Apollo 缓存更新程序- 用于在 Apollo 的就地更新可能不足的情况下,在发生变更后更新 Apollo 缓存的辅助程序。

GitHub 标志 ecerroni / apollo-cache-updater

用于在发生变更后更新 Apollo 缓存的辅助工具

apollo-cache-updater

由 nod 生成 NPM 版本 构建状态 覆盖范围状态 依赖关系 压缩 + gzip

用于在变更后更新 Apollo 缓存的零依赖辅助工具

地位

正在大力开发

为什么?

我想要一个更新程序,它既能利用重新获取查询的魔力,又能保留 Apollo 本地缓存的强大功能,但又能去除每次 mutation 更新通常所需的样板代码。

当需要更新本地缓存时,其复杂度会呈指数级增长:

  • 包含多个变量
  • 包含多个查询
  • 知道在我们的特定变更发生之前,哪些目标查询已经触发过。
  • 涵盖以下情况**:Apollo 的就地更新可能不足以应对所有情况

** 添加/删除到列表、从一个列表移动到另一个列表、更新筛选列表等。

该解决方案尝试通过 Apollo 的变量配置 mutation 的结果缓存行为,从而将视图与缓存层解耦update

演示

安装

$ npm install --save apollo-cache-updater

OR 

$ yarn add apollo-cache-updater

用法

示例:添加文章

以下代码块:

  • 新增…
  • apollo-codegen:根据 GraphQL schema 和查询文档生成 API 代码或类型注解

GitHub 标志 apollographql / apollo-tooling

✏️ Apollo CLI 用于客户端工具(大部分已被 Rover 取代)

Apollo CLI

GitHub 许可证 npm 加入 Slack


[2023-03-29] 注意 - 所有apollo service:*命令将于 2023 年 4 月 28 日停止服务。更多详情请参阅此博客文章。


[2022-07-07] 您是为了代码生成而来吗?我们强烈建议您改用graphql-code-generator 。本仓库中的代码生成功能已停止维护,并将于未来的版本中彻底移除。更多迁移详情,请参阅@dotansimha的精彩文章#2053


[2022-01-21] 注意 - 即将弃用计划:我们(Apollo)正在努力全面弃用此代码库及其相关项目。此代码库中的大部分功能已被更新的项目替代,其余功能也将很快被替代。当所有内容都准备好正式弃用时,我们将分享详细的迁移文档。但如果您计划将此处的任何内容用于新项目(当然,如果此处的工具适合您,您仍然可以这样做 - 支持……),请注意这一点。

GitHub 标志 dotansimha / graphql-code-generator

一款基于 GraphQL schema 和 GraphQL 操作(查询/变更/订阅)生成代码的工具,并可灵活支持自定义插件。

npm 版本

https://the-guild.dev/graphql/codegen

GraphQL 代码生成器是一个可以根据 GraphQL schema 生成代码的工具。无论您是在开发前端还是后端,都可以使用 GraphQL 代码生成器从 GraphQL Schema 和 GraphQL 文档(查询/变更/订阅/片段)生成输出。

通过分析和解析模式及文档,GraphQL 代码生成器可以基于预定义模板或用户自定义模板,输出多种格式的代码。无论您使用哪种编程语言,GraphQL 代码生成器都能满足您的需求。

GraphQL 代码生成器允许您根据插件选择所需的输出,这些插件非常灵活且可定制。您还可以编写自己的插件来生成符合您需求的自定义输出。

您可以在浏览器中实时试用此工具,并查看一些实用示例。查看GraphQL 代码生成器实时示例

我们目前支持并维护这些插件(TypeScript、Flow…

GitHub 标志 apollographql / eslint-plugin-graphql

🚦 请对照模式检查您的 GraphQL 查询字符串。

eslint-plugin-graphql

npm 版本 构建状态 加入 Slack


[2022-01-25] 注意 - 即将弃用计划:我们(Apollo)正在努力完全弃用此代码库。我们建议您迁移到社区支持的graphql-eslint。当此处的所有内容都准备好正式弃用时,我们将分享详细的迁移文档。但如果您计划将此处的任何内容用于新项目,请注意这一点(当然,如果此项目对您有效,您仍然可以这样做——但对此项目的支持将非常有限)。


一个 ESLint 插件,用于检查 JavaScript 中的带标签的查询字符串或.graphql文件中的查询是否符合 GraphQL 模式。

npm install eslint-plugin-graphql

Atom 截图

eslint-plugin-graphql它内置了四个 GraphQL 客户端的开箱即用设置:

  1. Apollo客户端
  2. 中继
  3. 洛卡
  4. FraQL

如果你想检查你的 GraphQL schema,而不是查询,请查看cjoudrey/graphql-schema-linter

导入模式 JSON

您需要将内省查询结果或模式作为字符串导入到模式中……

文章来源:https://dev.to/iamrobert/best-resources-to-learn-react-graphql-5dkk