一、Bun 的 HTTP 服务器是内置的
用 Node.js 写一个 HTTP 接口,至少要装 express 或 http 模块。用 Bun,什么都不用装------Bun.serve 是运行时自带的 API。
typescript
const server = Bun.serve({
port: 8080,
fetch(req) {
const url = new URL(req.url);
if (url.pathname === '/todos' && req.method === 'GET') {
return Response.json(todos);
}
return new Response('Not Found', { status: 404 });
}
});
console.log(`Server running on http://localhost:${server.port}`);
这段代码不需要 import 任何外部包。Bun.serve、Request、Response 都是 Web 标准 API。
二、TypeScript 零配置
Bun 内置 TypeScript 转译器,不需要 tsc、ts-node、tsconfig.json:
bash
bun run server.ts
直接运行 .ts 文件。启动速度远快于 ts-node,因为 Bun 的转译器用 Zig 实现,没有冷启动延迟。
三、路由手动处理
Bun.serve 没有内置路由------路由需要自己解析:
typescript
fetch(req) {
const url = new URL(req.url);
const id = url.pathname.match(/^\/todos\/(\d+)$/)?.[1];
if (id) {
const todo = todos.find(t => t.id === parseInt(id));
return Response.json(todo);
}
}
对于小项目,手动路由比上框架更透明。等路由多了再用 Elysia 或 Hono。
四、和 Node.js 对比
Node.js + Express 需要 npm install express + ts-node。Bun 零依赖,内置 TypeScript 支持,API 遵循 Web 标准。HTTP 吞吐量约为 Node.js 的 3-5 倍。
五、总结
- Bun.serve 零依赖启动 HTTP 服务,API 遵循 Web 标准
- TypeScript 开箱即用,无需配置
- 路由需手动解析,小项目够用
- 前端也可以用同样的 fetch API 调用后端