知海

JavaScript:gq-loader(客户端)

graphql-github-io-zh-Hans生态项目与库

简介

gq-loader 是一个简单的 JavaScript GraphQL 客户端,通过 webpack loader 机制,让 *.gql 文件可以作为模块直接在 JavaScript 中导入和使用。它旨在简化 GraphQL 查询在项目中的组织方式,开发者可以将查询语句写入独立文件,以模块化的方式管理和复用。

功能特性

  • .gql 文件作为 ES Module 导入,配合 webpack 实现按需加载
  • 轻量级设计,核心逻辑简洁,无额外运行依赖
  • 支持 GraphQL 查询、变更等操作文本的模块化组织
  • 与现有 webpack 构建链路无缝集成

安装

bash 复制代码
npm install gq-loader --save-dev

配置

webpack.config.js 中添加 loader 规则:

js 复制代码
module.exports = {
  module: {
    rules: [
      {
        test: /\.gql$/,
        use: "gq-loader",
      },
    ],
  },
};

基本用法

1. 创建 .gql 文件

graphql 复制代码
# query.gql
query UserInfo($id: ID!) {
  user(id: $id) {
    id
    name
    email
  }
}

2. 在 JavaScript 中导入并使用

js 复制代码
import UserInfo from "./query.gql";

// UserInfo 为解析后的 GraphQL 查询字符串
fetch("/graphql", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    query: UserInfo,
    variables: { id: "123" },
  }),
})
  .then((res) => res.json())
  .then((data) => console.log(data));

API

gq-loader 本身不暴露复杂的运行时 API,它作为 webpack loader,仅负责将 .gql 文件内容转换为可供 JavaScript 使用的字符串模块。转换后的模块默认导出为查询字符串。

原理说明

gq-loader.gql 文件的文本内容作为默认导出字符串封装在 CommonJS 模块中,webpack 打包时再将其转换为浏览器可识别的模块代码,从而在不引入额外依赖的情况下实现 GraphQL 脚本的模块化加载。

许可证

该项目采用 MIT 许可证,可自由使用和修改。

帮助我们改进文档

发现翻译问题或内容错误?请告诉我们。