counter 示例源码
这些文件来自仓库的 examples/counter,可结合对应中文文档阅读和运行。
wrangler.jsonc
{
"name": "counter",
"main": "index.js",
"compatibility_date": "2026-01-01",
"durable_objects": {
"bindings": [{ "name": "COUNTER", "class_name": "Counter" }]
},
"migrations": [{ "tag": "v1", "new_sqlite_classes": ["Counter"] }]
}
index.js
export class Counter {
constructor(state, env) {
this.state = state;
}
async fetch(request) {
let n = (await this.state.storage.get("n")) ?? 0;
n++;
await this.state.storage.put("n", n);
return Response.json({ n, url: request.url });
}
}
export default {
async fetch(request, env) {
const name = new URL(request.url).searchParams.get("name") ?? "default";
const id = env.COUNTER.idFromName(name);
return env.COUNTER.get(id).fetch(request);
},
};