npm 包 graphql-normalizer 使用教程

阅读时长 5 分钟读完

在现代前端开发中,前端应用往往需要和后端接口进行交互。GraphQL 是一种新型的 API 框架,虽然它已经有一段时间了,但是很多开发者仍然不是很熟悉,尤其是在前端领域。在使用 GraphQL 进行数据交互的过程中,我们经常需要对返回的数据进行统一化的处理和缓存,这时候就需要使用到 graphql-normalizer 这个 NPM 包。

graphql-normalizer 简介

graphql-normalizer 是由 Apollo 开发的一款用于对 GraphQL 查询返回的 JSON 数据进行规范化处理的工具包,它可以将 GraphQL 查询结果从多种不同的结构转换为一个规范化的、扁平化的对象,遵循 Relay 规范。相比之下,原始的 GraphQL 响应往往包含了大量的嵌套结构,容易导致冗余数据和性能问题。

graphql-normalizer 还支持对 GraphQL 查询结果进行缓存和比较,以减少网络带宽和提高程序效率。如果你正在构建一个 React 应用,使用 Apollo Client 来管理后端数据,那么 graphql-normalizer 将是一个不可或缺的工具。

安装与使用

首先,你需要在你的项目中安装 graphql-normalizer:

接下来,你需要导入 graphql-normalizer:

然后,你可以使用 normalize 函数对 GraphQL 查询结果进行规范化。假设你的查询如下:

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

如果你直接将这个查询的结果存储为一个对象,那么它的结构将类似于这样:

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

这个结构很难处理,并且很可能会导致冗余数据。使用 graphql-normalizer,你可以将它转化为一个扁平化的、规范化的对象:

这个对象的结构更加清晰,具有更高的可读性和可维护性。你可以在你的应用中直接使用它,而不需要对原始结果进行额外的处理。

缓存

除了对查询结果进行规范化处理,graphql-normalizer 还支持对查询结果进行缓存。这样,当你发起一个新的查询时,你可以优先使用缓存中的数据,而不必向服务器重新请求数据。

首先,你需要定义一个用于存储缓存数据的对象:

每当你发起一个新的查询请求时,你可以先检查缓存中是否已经存在该查询的结果:

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

通过将规范化后的数据存储在缓存对象中,你可以在之后的查询中直接使用它们,而不必重新请求服务器。这将大大提高你的应用的性能和网络效率。

总结

graphql-normalizer 是一个非常有用的 NPM 包,它可以帮助你对 GraphQL 查询结果进行规范化处理和缓存。使用它,你可以避免冗余数据和网络性能问题,提高应用的效率和性能。如果你的应用需要与 GraphQL 接口交互,那么你一定要尝试使用 graphql-normalizer。

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

纠错
反馈