文档实战项目

Deno 实战项目蓝图

四个可继续扩展的 Deno 项目结构、里程碑与验收清单

这里不是只展示 “Hello World”,而是给出能逐步实现、测试和部署的项目骨架。先完成垂直切片,再添加功能。

1. Fresh 博客

fresh-blog/
├── routes/posts/[slug].tsx
├── routes/admin/posts.tsx
├── islands/PostEditor.tsx
├── components/
├── src/db/{client,schema}.ts
└── deno.json

技术:Fresh 2 + PostgreSQL + Drizzle。第一阶段只做文章列表、详情和受保护的创建接口;第二阶段才加 Markdown、草稿、图片与搜索。

验收:无 JavaScript 时文章可阅读;slug 唯一约束生效;编辑 island 之外没有多余 hydration;migration 在独立发布步骤运行。

2. Deno MCP Server

mcp-project/
├── main.ts
├── tools/{search,read}.ts
├── schemas.ts
├── fixtures/
└── deno.json

从 stdio 和只读 tool 开始。使用 Zod 校验参数、fixtures 做协议测试,再决定是否增加 Streamable HTTP、认证与写操作。参考 MCP Server 教程

3. Cron 服务

cron-service/
├── jobs/daily-report.ts
├── services/report.ts
├── main.ts
└── deno.json

把 job 逻辑写成普通可测试函数,再由 Deno.cron() 触发。任务必须幂等,使用数据库唯一键或 execution key 防止重复副作用,并为延迟、失败和补跑提供观测入口。

4. 图片处理 API

image-api/
├── routes/transform.ts
├── services/image.ts
├── storage.ts
└── main.ts

用 Hono + npm:sharp 接收受限尺寸的图片,验证 MIME 与像素上限,转换后写入对象存储。sharp 涉及原生依赖,部署前必须在目标 Deno 版本和容器/Deploy 环境做 smoke test。

每个项目共用的完成标准

  • deno fmt --check && deno lint && deno check && deno test 全部通过;
  • deno.lock 提交,安装脚本有显式 allowlist;
  • 开发、迁移、测试和线上进程分别使用最小权限;
  • health check、结构化日志、超时、错误映射和 secret 管理已接入;
  • README 写明本地启动、数据库准备、部署与回滚。

输入关键词搜索全部文档。