npm 包 vue-apollo 使用教程

阅读时长 6 分钟读完

在前端开发中,常常需要和后端进行数据交互,而 Apollo Client 是个不错的 GraphQL 客户端,方便前端开发者处理数据。 vue-apollo 库则是针对 Vue 框架开发的 Apollo 解决方案,利用该库可以在 Vue 应用中方便地使用 GraphQL 查询和缓存管理。

下面,我们将详细介绍 vue-apollo 库的使用流程。

1. 安装

安装 vue-apollo 库非常简单,我们可以使用 npm 进行安装:

其中,apollo-boost 用于创建 Apollo Client,graphqlgraphql-tag 则是一个可编程的模板字符串库,用于编写 GraphQL 查询。

vue-apollo 安装完毕之后,在 Vue 中引入该库:

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

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

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

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

--- -----
  -------- -------------------------
  ------- - -- ------
-----------------
展开代码

上述代码中,我们实例化了一个 ApolloClient 并将其通过 VueApollo 注册至全局。ApolloClient 的构造函数中需要指定 GraphQL 服务端的地址。

2. 查询

当我们成功连接到 GraphQL 服务器后,就可以发起查询请求。我们可以在 Vue 组件中使用 apollo 选项进行查询:

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

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

------ ------- -
  ------- -
    ------ -
      ------ ----
        ----- -
          ----- -
            --
            -----
          -
        -
      -
    -
  -
-
---------
展开代码

这里定义了一个查询 items 的 Apollo 钩子,该钩子将会发起一个 GraphQL 查询,获得所有 itemsidtitle 属性。根据 $apollo.loading$apollo.error$apollo.data,我们可以方便地处理查询请求的三种状态。

3. 变异

在实际开发中,我们经常需要修改后端数据。 vue-apollo ​库也为我们提供了方便的处理能力。比如,我们可以通过 apollo 选项定义 mutate 方法:

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

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

------ ------- -
  ---- -- -
    ------ -
      ------ --
    -
  --
  -------- -
    ----- --- -- -
      ----- - ---- - - ----- ---------------------
        --------- ----
          -------- --- -------- -------- -
            --- ------- ------- -
              --
              -----
            -
          -
        --
        ---------- -
          ------ ----------
        -
      --
      -----------------
    -
  -
-
---------
展开代码

我们定义了 add 方法并通过 this.$apollo.mutate() 发起添加操作,通过 variables 传递参数。this.$apollo.mutate() 的返回值为 Promise,我们可以通过解构获取服务端返回的数据,并在控制台打印。

4. 订阅

最后,我们还需要介绍一下 vue-apollo 的订阅功能。订阅用于发起实时通信,我们可以通过 apollo 选项定义 subscribe 方法:

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

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

------ ------- -
  ------- -
    --------- -
      ---------------- -
        --------- ----
          ------------ -
            ------------ -
              --
              -----
            -
          -
        --
        ----------- ------ - ---------------- -- -
          -- ------------------------ -
            ------ ----
          -
          ----- - ------------ - - ---------------------
          ------ ----------------- ----- -
            --------- ------------------ -------------
          --
        -
      -
    -
  -
-
---------
展开代码

我们通过 subscribeToMore 定义了一个订阅 messageAdded 的 GraphQL ​订阅请求。在 updateQuery 回调函数中,我们将服务端返回的新数据追加至原有列表中。

总结

到这里,我们通过详细的代码实例,介绍了如何在 Vue 项目中使用 vue-apollo 库,包括查询、变异和订阅三种数据处理方式。希望该教程对你在前端开发中提供一定的指导和参考。

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

纠错
反馈

纠错反馈