Skip to content
GQLoom

快速上手

这篇指南将带你快速上手 GQLoom,并创建一个简单的 GraphQL 后端应用。

前提条件

你只需要一个 JavaScript/TypeScript 运行时,比如 Node.js、Bun、Deno 或 Cloudflare Workers。

初始化项目

小提示

如果你已有一个项目,可以跳过这一步,直接快进到安装依赖

首先我们需要新建文件夹并初始化项目:

sh
mkdir gqloom-app # 新建文件夹
cd ./gqloom-app # 进入文件夹
npm init -y # 初始化空项目

npm i -D typescript @types/node tsx # 安装 TypeScript 和相关依赖
npx tsc --init # 初始化 TypeScript 配置
sh
mkdir gqloom-app # 新建文件夹
cd ./gqloom-app # 进入文件夹
yarn init -y # 初始化空项目

yarn add -D typescript @types/node tsx # 安装 TypeScript 和相关依赖
yarn dlx -q -p typescript tsc --init # 初始化 TypeScript 配置
sh
mkdir gqloom-app # 新建文件夹
cd ./gqloom-app # 进入文件夹
pnpm init # 初始化空项目

pnpm add -D typescript @types/node tsx # 安装 TypeScript 和相关依赖
pnpm exec tsc --init # 初始化 TypeScript 配置
sh
mkdir gqloom-app # 新建文件夹
cd ./gqloom-app # 进入文件夹
bun init # 初始化项目
sh
mkdir gqloom-app # 新建文件夹
cd ./gqloom-app # 进入文件夹
deno init # 初始化项目

安装依赖

GQLoom 支持诸多的运行时类型,选择你最喜欢的 ORM 和输入验证库!

sh
npm i graphql @gqloom/core valibot @gqloom/valibot
sh
pnpm add graphql @gqloom/core valibot @gqloom/valibot
sh
yarn add graphql @gqloom/core valibot @gqloom/valibot
sh
bun add graphql @gqloom/core valibot @gqloom/valibot
sh
deno add npm:graphql npm:@gqloom/core npm:valibot npm:@gqloom/valibot

此外,我们还需要选择一个适配器来运行我们的 GraphQL 服务器。
这里我们选择 graphql-yoga 适配器。

sh
npm i graphql-yoga
sh
pnpm add graphql-yoga
sh
yarn add graphql-yoga
sh
bun add graphql-yoga
sh
deno add npm:graphql-yoga

你好,世界

ts
import { 
createServer
} from "node:http"
import {
query
,
resolver
,
weave
} from "@gqloom/core"
import {
ValibotWeaver
} from "@gqloom/valibot"
import {
createYoga
} from "graphql-yoga"
import * as
v
from "valibot"
const
helloResolver
=
resolver
({
hello
:
query
(
v
.
string
())
.
input
({
name
:
v
.
nullish
(
v
.
string
(), "World") })
.
resolve
(({
name
}) => `Hello, ${
name
}!`),
}) const
schema
=
weave
(
ValibotWeaver
,
helloResolver
)
const
yoga
=
createYoga
({
schema
})
const
server
=
createServer
(
yoga
)
server
.
listen
(4000, () => {
console
.
info
("Server is running on http://localhost:4000/graphql")
})

下一步