CertiBuddy Blog

用 Cloudflare Workers 搭一个博客 CMS

· 1 分钟阅读

用 Cloudflare Workers 搭一个博客 CMS

这是一篇示例文章,用来验证构建流程。它同时演示了几件事:

为什么是 Git-native

已发布的内容只存在于内容仓库里。D1 保存的是草稿、索引和状态,删掉它之后系统仍然能从 Git 重建:

存在哪里存什么
GitHub已发布的内容、媒体、站点配置
D1草稿、索引、发布任务、审计日志

这条边界是整个设计的地基:渲染公开站点时不该碰任何数据库。

一段代码

export async function publish(input: PublishInput): Promise<PublishResult> {
  const currentRevision = await content.getRevision();

  if (input.expectedRevision !== undefined && input.expectedRevision !== currentRevision) {
    throw errors.conflict();
  }

  return content.writeFiles(files, message);
}

待办

小结

发布是一次提交,冲突会失败而不是覆盖。剩下的都从这两条推导出来。