npm 包 apollo-codegen-typescript 使用教程

在前端开发中,处理数据的过程是非常重要的,GraphQL 是一个非常强大的数据查询语言,而 apollo-codegen-typescript 是一个非常好用的 npm 包,它能够根据 GraphQL 查询和 JSON 返回值自动生成 TypeScript 类型定义和查询 Hooks,大大降低了我们的工作难度,本文将会为大家介绍如何使用 apollo-codegen-typescript。

安装

首先,我们需要安装 apollo-codegen-typescript,这可以通过 npm 进行安装,打开你的终端并输入以下命令:

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

接下来我们需要在项目中安装相应的 graphql 和 apollo 包,执行以下命令:

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

生成 GraphQL 类型定义

之后,我们需要在终端中进入到保存了 gql 的目录下,然后执行以下命令生成 GraphQL 类型定义文件:

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

其中,--schema 为指定 schema.json 文件位置,--target 为目标文件类型,这里我们选择了 TypeScript,src/**/*.graphql 表示查询语句文件夹的位置,这里我们为了简单处理就将所有的 graphql 都置于 src 文件夹下,如果您有怎样的目录结构,可以根据规则进行相应的修改。

执行完该命令后,会生成所有的 TypeScript 定义文件,这里举个例子:

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

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

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

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

生成 Hooks

接下来我们需要根据 GraphQL 查询自动生成 Hooks,执行以下命令:

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

其中,--schema 和 --target 含义和上面相同,--output 参数表示生成代码的目录。

执行时,apollo-codegen-typescript 会自动查找定义在 src 目录下的 .graphql 中的所有查询语句,并生成相应的 hooks,比如:

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

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

我们只需要在组件中引入这个文件即可完成 Hooks 导入,比如:

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

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

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

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

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

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

可以看到这里已经使用了之前生成的 MyQuery 类型定义,自动生成的类型帮助我们避免了很多手写类型的问题,同时生成的 useMyQuery Hook 也让我们的 GraphQL 查询更加简单明了。

总结

通过本教程,我们已经成功的使用 apollo-codegen-typescript 生成了 GraphQL 查询的 TypeScript 类型定义和查询 Hooks,并且使用了 Hooks 以及生成的类型定义,最后对我们遇到的问题有很好的解决助益,在使用上 Apollo + GraphQL + codegen-typescript 组合是非常值得推荐的,它能够极大的提高我们的开发效率和代码的可维护性。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/195889


猜你喜欢

  • npm 包 utp 使用教程

    概述 utp是一个基于UDP封装的轻量级传输协议,它可以提供比TCP更快的速度和更低的延迟。 npm包utp是一个JavaScript实现的utp协议库,它可以在Node.js中使用。

    5 年前
  • npm 包 fifo 使用教程

    什么是 fifo? fifo 是一种先进先出(First In First Out)的数据结构。在计算机中,它被广泛用于处理请求队列,缓冲区,以及数据交换等场景中。

    5 年前
  • 前端工具之 `npm` 包 `streamspeed` 使用教程

    前端工具之 npm 包 streamspeed 使用教程 前端开发每天都有各种各样的任务需要处理,大多数情况下我们可能需要处理大量的文件以及数据,这个时候就需要用到一些操作流的工具来辅助我们。

    5 年前
  • npm 包 magnet-uri 使用教程

    在前端开发中,如果要处理磁力链接(magnet link),通常会使用 npm 包 magnet-uri。这个包可以将磁力链接转换成对象形式,或者将对象形式转换成磁力链接。

    5 年前
  • npm 包 string2compact 使用教程

    在前端开发中,我们经常需要对字符串进行一些处理,例如去除空格、换行符等。针对这一需求,我们可以使用 npm 包 string2compact。 安装 string2compact 使用 npm 进行全...

    5 年前
  • npm 包 compact2string 使用教程

    什么是 compact2string? compact2string 是一个用于将 JavaScript 对象转换为紧凑字符串格式的 npm 包。这个包可以用于在前端或者服务器端将对象进行存储、传输或...

    5 年前
  • npm 包 bittorrent-peerid 使用教程

    简介 bittorrent-peerid 是一个可以生成 BitTorrent Peer ID 的 npm 包,用于在使用 BitTorrent 协议时唯一识别种子,同时保护了自身的匿名性和隐私。

    5 年前
  • npm 包 rollup-plugin-delete 使用教程

    前言 在打包和发布前端项目时,我们经常会需要删除一些无用的文件,比如说构建产生的临时文件和目录、过期的缓存文件等等。手动删除这些文件是一种繁琐且容易出错的操作,因此我们需要一个自动化的解决方案。

    5 年前
  • npm 包 @liangchun/rollup-plugin-auto-external 使用教程

    在前端开发中,很多时候我们需要使用各种各样的第三方库和插件来完成我们的开发工作。在当今的开源生态中,有数万的 npm 包可供选择。然而,在使用这些包时,我们需要解决许多问题,例如版本冲突、依赖管理等。

    5 年前
  • npm 包 pseudomap 使用教程

    在前端开发中,pseudomap 是一个非常有用的 npm 包,它提供了一种快速,高效的键/值存储方案,可以帮助我们处理大量数据,并且比默认的 JavaScript 对象更快。

    5 年前
  • npm 包 path-is-inside 使用教程

    path-is-inside 是一个用于判断路径是否在另一个路径内的 npm 包。在前端开发中,经常需要判断一个文件是否在另一个文件夹中。这时,我们可以使用 path-is-inside 来进行判断。

    5 年前
  • npm 包 is-data-descriptor 使用教程

    介绍 is-data-descriptor 是一个 npm 包,它提供了一种简单的方式来检查一个属性描述符是否为数据描述符。通过这个包,我们可以快速编写高质量的代码,并避免一些常见的错误。

    5 年前
  • npm包 is-accessor-descriptor 使用教程

    什么是 is-accessor-descriptor is-accessor-descriptor 是一个 npm 包,用于检查对象的属性描述符是否是一个访问器属性描述符(即 getter 和 set...

    5 年前
  • npm 包 create-error-class 使用教程

    前言 在开发过程中,我们需要经常定义错误类来处理不同的业务逻辑条件。这种情况下,我们可能需要手动定义很多的错误类,而这个过程比较繁琐,而且容易出错。而 create-error-class 这个 np...

    5 年前
  • npm 包 class-utils 使用教程

    前言 随着 Web 开发的不断发展,前端工程化已经成为现代 Web 开发中的不可或缺的一部分。而 npm 是前端开发中最常用的包管理器之一。本文介绍一款实用的 npm 包——class-utils,它...

    5 年前
  • 使用 npm 包 spawn-default-shell 的教程

    简介 spawn-default-shell 是一个 npm 包,它提供了一种在 Node.js 环境下以默认的操作系统 shell(例如 Windows 的 cmd 或者 macOS/Linux 的...

    5 年前
  • npm 包 js-object-pretty-print 使用教程

    在前端开发中,经常需要处理 JSON 数据。但是,在处理完复杂的 JSON 数据后,可能会出现结构混乱难以阅读的情况。此时,js-object-pretty-print npm 包可以帮助我们美化输出...

    5 年前
  • npm 包 generate-package-json-webpack-plugin 使用教程

    generate-package-json-webpack-plugin 是一个基于 webpack 的插件,可以自动生成 package.json 文件中未列出的依赖项和版本号。

    5 年前
  • npm 包 socket.io-mock 使用教程

    前言 在前端开发中,用得到 socket.io。这个库可以让浏览器和服务器之间实现实时双向通信。然而,在写测试用例的时候,需要模拟一个 socket.io 服务器环境来测试自己所写的 socket.i...

    5 年前
  • npm 包 npm-audit-html 使用教程

    npm 是 Node.js 的包管理器,被广泛用于前端工程中。但是,在开发过程中,我们可能会遇到安全性问题或者性能问题,这个时候我们需要使用 npm 的工具来帮助我们检查和解决这些问题。

    5 年前

相关推荐

    暂无文章