npm 包 apollo-codegen 使用教程

阅读时长 5 分钟读完

GraphQL 是一种新兴的 API 技术,它允许前端开发人员从服务器上取回精确的数据,并且提供了一个良好的传输层。使用 GraphQL 时,服务端会为每个查询提供一定数量的类型信息,这样客户端就可以遵循这些类型信息来更好地结构化数据。但是对于应用程序,这样的类型信息需要转化为适合应用程序内置逻辑的工具。

apollo-codegen 是一个 npm 包,可用于解析服务端自定义的 GraphQL 查询,生成多个将要用到的代码文件,此外还能为 TypeScript 自动添加类型。在这篇文章中我会提供一些简单的示例来演示如何使用它。

安装和初始化

安装:npm install -g apollo-codegen

安装完毕后,你需要在你的项目文件夹中创建配置文件。在这个文件中,你需要设置好 graphql 服务器的完整地址,同时定义好要用到的文件以及文件输出的方式。一个简单的配置文件如下:

-- -------------------- ---- -------
-
  --------- ------------------------------------------
  ------------ -
    ------------------------
    ------------------
  --
  --------- -------------
  --------- -------------
-

schema 是你的 GraphQL 服务端网址,需要特别注意这个地址必须指向能够访问到 schema 的 /graphql 端点,否则 apollo-codegen 无法正常使用。

documents 是一个用于提供到保存了所有我们需要生成的代码文件的目录/通配符的数组,以及包含这些文件的任何需要的链。

target 则用来说明生成要用的语言。

output 则是输出文件的存放位置和命名格式。

如何使用

在执行 apollo codegen 命令之前,你需要为其提供一个 GraphQL 查询字符串,这个查询字符串被用来生成客户端需要的代码。在代码生成器的documents属性中可以按照你的意愿指定生成查询代码的文件路径。

通过执行以下命令可以生成文件

将会抓取GraphQL Schema,并把结果写入 schema.json 文件中,之后就可以执行代码生成命令:

一个示例

在这个示例中,我们将会请求一个还没有写完全的 fake API。在 apollo-codegen 帮助下,我们可以在客户端写出一个仅仅知道 处理器 / query 返回了什么信息的 mock API。

服务端

首先,我们开发一个服务端,它将提供一些假数据和少许约束。

-- -------------------- ---- -------
---- ----- -
  ----------------- ------- --------- -------- ------
  -------- --------
-

---- ------ -
  --- ----
  ---------- -------
  --------- -------
  ------ ------
-

---- ---- -
  --- ----
  ------ -------
  ----- -------
  ------ ----
  ------- ------
-

客户端

其次,我们创建一个 Apollo 客户端,来发起请求并处理返回数据。

-- -------------------- ---- -------
----- ----------------------- ------- ---------- ------- -
  ----------------- ----------- --------- ---------- -
    ---------
    --------
    ----- -
      -----
      -----
    -
  -
-

在 stdout 中看到处理后的代码类似于:

-- -------------------- ---- -------
------ --------- ----------- -
  ------ ---- --------- - -
    ---------- -------
    --------- -------
  --

  ------ ---- ----- - -
    ------------ --------
    -------- ------ - -----
  --

  ------ ---- ------ - -
    ------------ ---------
    ----------- ------ - -----
    ---------- ------ - -----
    ------- ------ - ------- - -----
  --

  ------ ---- ----- - -
    ------------ -------
    ------- ------ - -----
    ------- ------ - -----
  --
-

-- -------------- --
-- ---- ---- --- ------------- --------- --- ------ --- -- -------

通过 apollo-codegen,可以自动生成最终代码,并且使用跟上面类似的方式访问所有需要的数据。你也可以在代码编写时做一些自动化处理,从而充分利用 GraphQL 的强类型系统,减少后期工作。

总结

在这篇文章中,我们介绍了 apollo-codegen 的使用方法,这个包可以帮助我们更好地利用 GraphQL 的强类型系统,从 GraphQL 服务实现到前端所需的所有类型代码。同时,我们也给出了一个简单的例子以至于你可以自己动手试试。这个方案将自动化生成前端代码,并且利用 GraphQL 的类型系统,减少代码的错误率和后期大量开发代码的工作。希望这篇文章对你有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/109835