npm 包 @apollographql/graphql-language-service-interface 使用教程

阅读时长 5 分钟读完

前言

Apollo GraphQL 是一个功能强大的开源 GraphQL 解决方案,包括 Apollo Client、Apollo Server、Apollo Engine 等一系列工具和库。其中,@apollographql/graphql-language-service-interface 是一个为提供编辑器中自动补全和错误信息的 GraphQL 语言服务器接口。

本文将详细介绍 @apollographql/graphql-language-service-interface 的使用,可供前端开发者学习和使用。

什么是语言服务器接口?

语言服务器接口(Language Server Interface,LSI)是一个为编辑器提供代码补全、错误检查、重构等功能的标准化协议。这个协议将编辑器和语言服务器解耦,让开发者能够使用不同的语言服务器。

安装

可以使用 npm 安装 @apollographql/graphql-language-service-interface

使用

首先,我们需要创建一个实现了 LSP 的 GraphQL 语言服务。在此,我们将使用 TypeScript 作为实例的编程语言。

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

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

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

创建 GraphQLConfig 对象的 fileNames 属性是必需的,因为该属性将告诉 GraphQL 配置文件在哪里找到您的 GraphQL 文件。这个对象还负责加载您的配置,包括 schema、客户端配置和外部变量。

LanguageService 构造函数接收 GraphQL client,并创建一个基于这个 client 的 GraphQL 语言服务。

现在,我们可以将服务绑定到任何语言服务器上,并启动监听 LSP 请求:

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

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

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

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

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

此处我们使用了 VSCode 的 LSP API,绑定我们的语言服务并监听 LSP 请求,包括文本同步和代码补全。

getCompletion 方法接收两个参数:

  • textDocument URI,用于在服务中定位文档
  • position,用于在所请求的文本中定位请求的代码补全

示例代码

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

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

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

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

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

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

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

总结

本教程介绍了 @apollographql/graphql-language-service-interface 的基础使用方法,可以在编辑器中提供更好的 GraphQL 语言支持。希望本文可以帮助到前端开发者,并引起更多人对 GraphQL 技术的关注。

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

纠错
反馈