Deno Web 开发
在 Deno.serve、Fresh、Hono、Oak 与静态站工具之间选择
先从需求选择层级,不要因为“做 Web”就默认安装全栈框架。
| 方案 | 定位 | 适合 | 不适合 |
|---|---|---|---|
Deno.serve | Web 标准 HTTP 原语 | webhook、小 API、代理 | 大量路由和业务中间件 |
| Fresh 2 | Deno-first 全栈 SSR | 内容、电商、CRUD、渐进交互 | 纯客户端 SPA |
| Hono | 跨 runtime 轻量 Web 框架 | REST、Edge、可移植 API | 强约定全栈页面 |
| Oak | Express/Koa 风格中间件 | Deno 后端、熟悉 middleware 的团队 | 追求最小跨平台 bundle |
| Lume | Deno 静态站生成器 | 文档、博客、内容站 | 动态业务后台 |
Aleph.js 曾是 Deno React SSR 的重要探索,但新项目应先检查其当前发布、维护状态和目标 runtime;不要仅凭历史文章把它列为默认方案。
最小 HTTP 服务
Deno.serve({ port: 8000 }, (request) => {
const url = new URL(request.url);
if (url.pathname === "/health") return Response.json({ ok: true });
return new Response("Not found", { status: 404 });
});
deno run --allow-net=0.0.0.0:8000 main.ts
选择规则
- 页面以服务端 HTML 为主、局部交互:Fresh。
- API 要同时部署到 Deno、Workers、Bun 或 Node:Hono。
- 团队偏好 middleware/context 模型:Oak。
- 只有少量 endpoint:保持
Deno.serve,少一层抽象。