Cloudflare Workers GraphQL 服务器项目教程
1. 项目的目录结构及介绍
workers-graphql-server/
├── github/
│ └── workflows/
├── src/
│ ├── index.js
│ ├── resolvers.js
│ └── schema.js
├── .gitignore
├── .prettierignore
├── .prettierrc
├── LICENSE
├── README.md
├── cargo-generate.toml
├── package-lock.json
├── package.json
├── webpack.config.js
└── wrangler.toml
github/workflows/
: 包含GitHub Actions的工作流配置文件。src/
: 项目的源代码目录,包含主要的JavaScript文件。index.js
: 项目的入口文件。resolvers.js
: GraphQL 解析器文件。schema.js
: GraphQL 模式文件。
.gitignore
: Git忽略文件配置。.prettierignore
: Prettier忽略文件配置。.prettierrc
: Prettier配置文件。LICENSE
: 项目许可证文件。README.md
: 项目说明文档。cargo-generate.toml
: Cargo生成配置文件。package-lock.json
: npm包锁定文件。package.json
: npm包配置文件。webpack.config.js
: Webpack配置文件。wrangler.toml
: Wrangler配置文件。
2. 项目的启动文件介绍
src/index.js
是项目的入口文件,负责启动和配置GraphQL服务器。以下是该文件的主要内容和功能:
import { createServer } from '@graphql-yoga/common';
import { schema } from './schema';
import { resolvers } from './resolvers';
const server = createServer({
schema: {
typeDefs: schema,
resolvers: resolvers,
},
cors: {
origin: '*',
credentials: true,
},
});
export default server;
createServer
: 创建GraphQL服务器实例。schema
: 导入GraphQL模式。resolvers
: 导入GraphQL解析器。cors
: 配置跨域资源共享。
3. 项目的配置文件介绍
wrangler.toml
wrangler.toml
是Wrangler的配置文件,用于部署和管理Cloudflare Workers。以下是该文件的主要内容和功能:
name = "workers-graphql-server"
type = "javascript"
account_id = "your_account_id"
zone_id = "your_zone_id"
workers_dev = true
[site]
bucket = "./public"
[[kv-namespaces]]
binding = "WORKERS_GRAPHQL_CACHE"
id = "your_kv_namespace_id"
name
: 项目名称。type
: 项目类型,这里是JavaScript。account_id
: Cloudflare账户ID。zone_id
: Cloudflare区域ID。workers_dev
: 是否启用Workers Dev模式。site
: 静态文件目录配置。kv-namespaces
: KV命名空间配置,用于缓存。
package.json
package.json
是npm包配置文件,包含项目依赖和脚本。以下是该文件的主要内容和功能:
{
"name": "workers-graphql-server",
"version": "1.0.0",
"description": "An Apollo GraphQL server built with Cloudflare Workers",
"main": "src/index.js",
"scripts": {
"start": "wrangler dev",
"deploy": "wrangler publish"
},
"dependencies": {
"@graphql-yoga/common": "^2.0.0",
"apollo-server-core": "^3.0.0"
},
"devDependencies": {
"prettier": "^2.0.0",
"webpack": "^5.0.0",
"wrangler": "^1.0.0"
}
}
name
: 项目名称。version
: 项目版本。- `