[ PROMPT_NODE_24176 ]
Pages Functions 说明文档
[ SKILL_DOCUMENTATION ]
# Cloudflare Pages Functions
基于 Workers 运行时的 Cloudflare Pages 无服务器函数。支持全栈开发与基于文件的路由。
## 快速导航
**需要...**
| 任务 | 前往 |
|------|-------|
| 设置 TypeScript 类型 | [configuration.md](./configuration.md) - TypeScript 设置 |
| 配置绑定 (KV, D1, R2) | [configuration.md](./configuration.md) - wrangler.jsonc |
| 访问 request/env/params | [api.md](./api.md) - EventContext |
| 添加中间件或认证 | [patterns.md](./patterns.md) - 中间件, 认证 |
| 后台任务 (waitUntil) | [patterns.md](./patterns.md) - 后台任务 |
| 调试错误或查看限制 | [gotchas.md](./gotchas.md) - 常见错误, 限制 |
## 决策树:这是 Pages Functions 吗?
需要无服务器后端?
├─ 是,用于静态站点 → Pages Functions
├─ 是,独立 API → Workers
└─ 仅静态托管 → Pages (无函数)
已有 Worker?
├─ 复杂的路由逻辑 → 使用 _worker.js (高级模式)
└─ 简单路由 → 迁移至 /functions (基于文件)
基于框架?
├─ Next.js/SvelteKit/Remix → 自动使用 _worker.js
└─ 原生/HTML/React SPA → 使用 /functions
## 基于文件的路由
/functions
├── index.js → /
├── api.js → /api
├── users/
│ ├── index.js → /users/
│ ├── [user].js → /users/:user
│ └── [[catchall]].js → /users/*
└── _middleware.js → 运行于所有路由
**规则:**
- `index.js` → 目录根路径
- 尾部斜杠可选
- 特定路由优先于全匹配路由
- 若无匹配则回退至静态资源
## 动态路由
**单段** `[param]` → 字符串:
js
// /functions/users/[user].js
export function onRequest(context) {
return new Response(`Hello ${context.params.user}`);
}
// 匹配: /users/nevi
**多段** `[[param]]` → 数组:
js
// /functions/users/[[catchall]].js
export function onRequest(context) {
return new Response(JSON.stringify(context.params.catchall));
}
// 匹配: /users/nevi/foobar → ["nevi", "foobar"]
## 核心功能
- **方法处理器:** `onRequestGet`, `onRequestPost` 等
- **中间件:** `_middleware.js` 用于横切关注点
- **绑定:** KV, D1, R2, Durable Objects, Workers AI, 服务绑定
- **TypeScript:** 通过 `wrangler types` 命令提供完整类型支持
- **高级模式:** 使用 `_worker.js` 实现自定义路由逻辑
## 阅读顺序
**初次接触 Pages Functions?** 从这里开始:
1. [README.md](./README.md) - 概览, 路由, 决策