Pages Functions 小演示
把一小段后端逻辑直接写在 Pages 站点的 functions/ 目录里——文件路径就是 URL,不用另开一个独立 Worker。
一句话区别
独立 Worker:单独一个项目,你自己在代码里写路由(if (pathname…))。
Pages Functions:跟静态网站绑在一起,functions/api/hello.js 自动变成 /api/hello。适合博客、站点自带的小接口。
GET /api/hello
文件:functions/api/hello.js
点按钮看结果…
GET /api/time
文件:functions/api/time.js · 每次都会变,证明 Function 真的跑了
点按钮看结果…
POST /api/echo
文件:functions/api/echo.js · 把你说的话原样带回
点按钮看结果…
动态 /api/greet/[name]
文件:functions/api/greet/[name].js · 方括号 = URL 参数
点按钮看结果…
浏览器 Network 里还能看到响应头 X-Dreamer-Pages-Fn: 1(来自 functions/_middleware.js)。
对照表
| Pages Functions | 独立 Worker | |
|---|---|---|
| 放哪 | 站点仓库的 functions/ | 单独 Worker 项目 |
| 路由 | 按文件路径自动 | 自己写 pathname 分支 |
| 适合 | 站点自带 API、表单、鉴权 | 独立服务、多站复用、Cron |
| 计费 | 算进 Workers 每日请求额度 | 同样算 Workers 请求 |
| 静态页 | 用 _routes.json 只让 /api 走 Function,静态仍免费无限 | 没有「同站静态」这回事 |
免费额度(练手够用)
- Pages Functions 请求 计入 Workers 免费额度(约每天 10 万次,和别的 Worker 共用)。
- 纯静态资源请求仍然免费且不限次数——前提是用
_routes.json把 Function 限定在/api/*(本演示已这么做)。 - 免费计划 CPU 约 10ms/请求;额度用完当天 Function 会失败,静态页可配置「fail open」继续出。
演示项目:dreamer-pages-fn(与博客 dreamer-home 分开,避免动到正式站)。源码说明见仓库 README-zh.md。