接上篇 —— Apollo 入门引导(五):连接 Apollo Studio —— 继续翻译 Apollo 的官网入门引导。
在前端连接你的 API。
Apollo 入门引导 - 目录:
完成时间:10 分钟
本教程的剩余各章将逐步构建应用的前端部分,前端项目使用 Apollo 客户端与刚刚构建的 GraphQL 服务进行通信:
Apollo 客户端(Apollo Client)是 JavaScript 的综合状态管理库。使项目可以使用 GraphQL 来管理本地和远程数据。Apollo 客户端与视图层无关,因此可以与 React,Vue,Angular 甚至是 Vanilla JS 一起使用。
本教程使用 React(Apollo 客户端核心库开箱即用地支持 React),但是每个视图层的底层概念都是相同的。
建立
如果前面跳过了服务部分,可以直接在教程仓库的 start/client/
目录中工作(在此处克隆仓库)。在该目录运行下面代码:
1 | npm install |
除其他依赖项外,关键是还将安装 @apollo/client
软件包,其中包括我们将使用的所有 Apollo 客户端功能。
安装 VSCode 的 Apollo 扩展(可选)
Apollo 为 Visual Studio Code 提供了扩展,其中包括许多有用的功能,例如语法突出显示,GraphQL 字段的 IntelliSense 建议以及性能评估。
1.大多数 VSCode 扩展功能均由 Apollo Studio 提供支持。要充分利用扩展,首先确保连接到了 Apollo Studio。
2.与 Apollo Server 一样,VSCode 扩展使用API 密钥与 Studio 进行通信。可以通过设置环境变量 APOLLO_KEY
的值来提供此 API 密钥。
复制 start/client/.env.example
的内容,在 start/client
目录下创建 .env
文件。然后粘贴 API 密钥,如下所示:
1 | APOLLO_KEY=在这里粘贴你的密钥 |
现在,密钥存储在环境变量 APOLLO_KEY
中。Apollo VSCode 使用此 API 密钥从注册的 Apollo schema 中获取服务的schema。
3.同样在 start/client
中,打开名为 apollo.config.js
的空文件。使用此文件来配置 Apollo VSCode 扩展和 Apollo CLI。
将以下代码段粘贴到 apollo.config.js
文件中:
1 | module.exports = { |
将 service
替换为上一章的 Studio 中创建的 graph 名。
这样就可以使用 VSCode 扩展了!现在开始构建第一个客户端。
初始化 ApolloClient
将以下内容粘贴到 src/index.tsx
中来创建 ApolloClient
的实例:
1 | import { ApolloClient, gql, NormalizedCacheObject } from '@apollo/client'; |
ApolloClient
构造函数需要两个参数:
- GraphQL 服务的
uri
(在本例中为localhost:4000
)。 InMemoryCache
的实例,用作客户端的cache
。从cache.ts
文件导入该实例。
仅需几行代码,客户端就可以获取数据了!
进行第一个查询
在将 Apollo 客户端 与 React 视图层集成之前,先尝试使用原始 JavaScript 发送查询。
- 将以下内容添加到
index.tsx
的底部:
1 | // ...ApolloClient instantiated here... |
- 确保 GraphQL 服务正在运行。如果没有完成本教程的“服务”章节,则可以通过从
final/server
中运行以下命令来运行完成的服务:
1 | npm install |
3.从 start/client
目录中,运行 npm start
以构建并运行的客户端应用程序。构建完成后,浏览器将自动打开链接 http://localhost:3000/
。
4.打开索引页面后,在浏览器的开发者工具中打开控制台。将看到一个打印出来的 Object
,其中包含服务对查询的响应。请求的数据包含在对象的 data
字段中,其他字段提供了关于请求状态的元数据。
您还可以在浏览器的开发者工具中打开 Network 标签,然后刷新页面,查看 Apollo 客户端执行查询请求的 graph(这是对 localhost:4000
发起的 POST 请求)。
5.删除刚添加的 client.query()
调用,以及不再需要的 gql
的导入。
接下来,将客户端与 React 集成在一起。
前端记事本,不定期更新,欢迎关注!