npm 包 @types/graphql-deduplicator 使用教程

在前端开发中,使用 GraphQL 可以帮助我们更快速地获取需要的数据。而 @types/graphql-deduplicator npm 包则提供一些额外的工具,帮助我们更好地优化GraphQL的请求和响应。在本文中,我们将介绍如何使用该 npm 包,并讲解其中的一些细节。

安装

在使用 @types/graphql-deduplicator 之前,需要先安装依赖的 npm 包:

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

使用

接下来,我们将按照以下步骤来使用 @types/graphql-deduplicator

引入

首先,需要在项目中引入该包:

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

这里采用了其他几个依赖包中的内容。具体可以去npm官网查看。

初始化 cache

在使用 graphql-deduplicator 之前,我们需要先对 cache 做一些初始化工作。我们可以使用 @urql/exchange-graphcache 这个 npm 包来实现,而在 Graphcache 中使用 normalize 函数来规范化并缓存 GraphQL 数据。

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

定义 rules 规则

@types/graphql-deduplicator 中的关键点是对规则的定义。这是一个非常重要的步骤,它定义了哪些查询应该被缓存,缓存应该保留多久等等。

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

其中,我们定义了三个不同类型的 rules 规则,如下:

  1. Apollo Client 的传统 cache-normalization,通过参数 query 定义缓存的查询语句,并设置 timeToLiveMsstaleTimeMs。当数据已经被缓存且未过期时,查询数据将使用缓存。

  2. 缓存 User 接口的请求结果。同样,通过 query 定义缓存语句,并设置 timeToLiveMsstaleTimeMs 以控制缓存时效。

  3. 缓存可变 Query 的表单请求。同样地,通过 query 定义缓存语句,并将 isMutableQuery 设置为 true 来表明此处需要缓存可变数据,之后同样设置 timeToLiveMsstaleTimeMs

设置 cacheExchange

最后,将 cache 和规则通过 cacheExchange 方法进行关联,并对 Graphql 请求进行处理:

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

若使用 apollo-client,也可以如下设置:

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

示例代码

下面是完整的代码示例:

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

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

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

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

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

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

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

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

总结

本文介绍了如何使用 @types/graphql-deduplicator,以及其中的一些关键点。正确地使用该 npm 包能够帮助我们更好地优化 GraphQL 请求和响应,从而更好地提高我们的应用程序性能。希望这篇文章对你有所帮助。

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


猜你喜欢

  • npm 包 gatsby-plugin-root-import 使用教程

    前言 在前端开发中,我们经常需要引入一些文件或者库。有时候,我们会发现在引入文件或者库的时候,路径过长,难以识别,不利于代码的阅读和维护。例如,有时候我们需要引入一个文件,路径如下: ------ -...

    4 年前
  • npm 包 mdx-utils 使用教程

    在前端开发中,我们常常需要处理 Markdown 格式的文本。而 mdx-utils 就是一款专门用来处理 Markdown 文件的 npm 包。本文将详细介绍如何使用 mdx-utils,包括 AP...

    4 年前
  • npm 包 docz-utils 使用教程

    在前端开发过程中,我们时常需要编写组件文档,docz 是一个非常好用的库来实现文档自动生成,而 docz-utils 是它的核心工具库,它提供了很多方便的方法。这篇文档主要介绍如何使用 docz-ut...

    4 年前
  • npm 包 rehype-docz 使用教程

    前言 前端开发人员在开发过程中不光需要学习掌握前端基础知识,还需要掌握一些辅助工具和技术。今天要介绍的一个工具便是 npm 包 rehype-docz。 rehype-docz 是一种用于编写文档、教...

    4 年前
  • npm 包 remark-docz 使用教程

    remark-docz 是一款基于 remark 和 docz 构建的静态文档站点生成器,可以用于构建各种类型的站点,支持 Markdown 和 MDX 语法,并能够自动生成文档目录、代码高亮、代码演...

    4 年前
  • npm包eslint-config-docz-js使用教程

    前言 在前端开发当中,一个好的代码规范能够让你的代码更加易读易维护。在这个过程中,eslint是一个必不可少的工具之一。在这篇文章中,我们将介绍一个名为eslint-config-docz-js的np...

    4 年前
  • npm 包 gatsby-theme-docz 使用教程

    简介 gatsby-theme-docz 是一个基于 Gatsby 的文档生成器。它提供了一些预定义的组件,并对 Markdown 排版做出了一些优化,以便于撰写文档。

    4 年前
  • npm 包 highlight.js-tokens 使用教程

    介绍 highlight.js-tokens 是一个在 JavaScript 中使用 highlight.js 包的解析器。它可以将代码解析成 highlight.js 高亮所需要的 tokens 序...

    4 年前
  • npm 包 @types/pascal-case 使用教程

    前言 在 TypeScript 中,我们经常需要对字符串进行转化和处理。pascalCase 是一种常见的字符串格式,在一些场景下十分有用。pascal-case npm 包提供了一个用于将字符串转换...

    4 年前
  • NPM 包 Sluggish 使用教程

    什么是 Sluggish? Sluggish 是一个非常方便的 NPM 包,它能够将字符串快速地转换成 URL 友好的格式。该包基于 Node.js 平台,主要是用于服务端渲染(SSR)应用程序。

    4 年前
  • npm 包 eslint-config-docz-ts 使用教程

    在前端开发中,代码质量是至关重要的一环。为了确保代码质量,我们需要使用工具来进行代码检测。而 eslint 是前端开发中一个非常流行的代码检测工具。它可以帮助我们捕获代码中的错误、代码风格问题以及潜在...

    4 年前
  • npm 包 @livingui/cwc-popper 使用教程

    前言 在前端开发中,我们经常需要使用弹出框、下拉框等常见的 UI 元素,而 cwc-popper 就是一个可以帮助我们实现这些 UI 元素的工具包。本文将介绍如何使用 @livingui/cwc-po...

    4 年前
  • npm 包 @livingui/cwc-tag 使用教程

    前言 在 Web 开发中,标签的展示及交互是不可避免的需求。为了方便开发者快速实现功能,npm 社区涌现了众多开源的前端组件库。其中,@livingui/cwc-tag 包就是一个非常优秀的标签组件库...

    4 年前
  • npm 包 @remusao/counter 使用教程

    简介 @remusao/counter 是一个轻量级的计数器组件,适用于前端网页的开发。它提供了简单易用的 API,可以帮助您快速地实现计数器功能。 安装 在使用 @remusao/counter 之...

    4 年前
  • NPM 包 @remusao/trie 使用教程

    在前端开发中,我们经常需要使用字典或者词库来进行字符串匹配、单词提示等操作。而 @remusao/trie 就是一个非常实用的 trie 树数据结构的库,可用于快速搜索和关键词匹配。

    4 年前
  • npm包 @remusao/smaz-compress 使用教程

    简介 随着互联网的普及,前端技术发展日新月异,对于前端工程师来说,掌握好各种优秀的工具包和插件能够极大地提升开发效率和用户体验。本文将介绍一个优秀的npm包:@remusao/smaz-compres...

    4 年前
  • npm 包 @types/har-format 使用教程

    什么是 @types/har-format @types/har-format 是一种 npm 包,它提供了与 har 文件格式相关的 TypeScript 类型定义。

    4 年前
  • npm 包 @remusao/smaz-decompress 使用教程

    前言 在前端开发中,我们经常需要处理压缩过的数据。@remusao/smaz-decompress 是一款专业用于处理 smaz 压缩数据的 npm 包,其具有轻便、易用等优势,十分适合前端的数据处理...

    4 年前
  • npm 包 @csstools/normalize.css 使用教程

    本文将向您介绍 npm 包 @csstools/normalize.css 的使用方法。该包是一款用于标准化 CSS 样式的工具,能够自动解决不同浏览器之间的样式差异,使用该工具可以让您更好地专注于网...

    4 年前
  • npm 包 documentation-markdown-themes 使用教程

    前端开发中文档编写是必不可少的工作,同时也要考虑到文档的展示效果和易用性,documentation-markdown-themes 可以方便地解决文档主题的展示和自定义的问题,让文档更加美观和易用。

    4 年前

相关推荐

    暂无文章