第2课:5分钟!用 Trae AI 生成你的第一个后端服务(Bunjs + Elysia)
本文目标: 先建立全局认知,再让 Trae AI 写代码😁
不写一行代码,让 Trae AI 帮你搞定
今天你会学到这些关键词
| 关键词 | 一句话解释 | | :-- | :-- | | Trae | 字节跳动的 AI 编程 IDE,内置 AI 助手,免费使用 | | AGENTS.md | 项目配置文件,告诉 AI 你的技术栈和规范 | | Bun.js | 超快的 JavaScript 运行时,比 Node.js 快 4 倍 | | Elysia | 高性能 Web 框架,比 Express 快 21 倍 |
一句话总结:用 Trae 读取 AGENTS.md,生成基于 Bun.js + Elysia 的后端代码。
![]()
⚠️ 【核心提示】本课程最重要的是学会用概念描述需求,让 Trae 生成代码。掌握这个思路后,你可以轻松切换到 Node.js、Python、Java 等任何语言!
今天我们要做什么?
上节课我们用 Express.js 理解了后端的核心逻辑:
接收请求 → 解析验证 → 业务处理 → 数据库操作 → 返回响应
今天,我们用 5 分钟,让 Trae 生成一个完整的后端服务。
为什么用 Elysia 框架?
本课程核心是开发思路和提示词工程,并不限制具体编程语言。选择 Elysia 是因为:
-
• 🔥 性能更强:Elysia 是目前性能最强的 TypeScript 框架,基于 TechEmpower Benchmark 官方测试数据:
| 框架 | 运行时 | 吞吐量 (请求/秒) | 相对性能 | | :-- | :-- | :-- | :-- | | Elysia | Bun | 2,454,631 | 基准 | | Gin | Go | 576,919 | 4.3x 慢 | | Fastify | Node | 415,680 | 5.9x 慢 | | Express | Node | 113,117 | 21.7x 慢 | | NestJS | Node | 105,064 | 23.4x 慢 |
💡 简单说:Elysia 比 Express 快 21 倍,比 Fastify 快 6 倍,性能堪比 Go 和 Rust 框架!
-
• 🚀 开发体验好:链式 API 设计,代码更简洁优雅
-
• 📦 类型安全:端到端类型安全,自动类型推断
-
• ⚡ 跨运行时:同时支持 Bun 和 Node.js
Elysia 也支持 Node.js!
虽然 Elysia 在 Bun 上性能最佳,但它完全兼容 Node.js:
# Node.js 用户安装
npm install elysia
npm install @elysiajs/node # Node 适配器
// Node.js 版本入口文件
import { Elysia } from "elysia";
import { node } from "@elysiajs/node";
const app = new Elysia()
.get("/", () => ({ message: "Hello from Node.js!" }))
.listen(3000, node); // 使用 node 适配器
本课程使用 Bun 运行,因为更轻量、启动更快。但你可以放心,学到的 Elysia 知识在 Node.js 中完全适用!
你将获得:
-
• ✅ 一个能运行的 HTTP 服务器
-
• ✅ 两个 API 接口
-
• ✅ 请求日志记录
全程不写代码,只写提示词。
第0步:了解 Trae 和 AGENTS.md(推荐)
什么是 Trae?
Trae 是字节跳动推出的 AI 原生 IDE,类似于 Cursor,专为 AI 编程而生:
-
• 🤖 内置 AI 助手:无需配置 API Key,开箱即用
-
• 💬 自然语言编程:用中文描述需求,AI 直接生成代码
-
• 🔧 代码自动补全:比 GitHub Copilot 更智能的上下文理解
-
• 🌟 免费使用:目前完全免费,无额度限制
本课程所有代码都通过 Trae 的 Auto 模型 生成,你只需要复制提示词,Trae 就能帮你写出符合规范的后端代码。
什么是 AGENTS.md?
在开始前,介绍一个提升 AI 生成代码质量的神器 —— AGENTS.md。
什么是 AGENTS.md?
AGENTS.md 是放在项目根目录的配置文件,类似于 Cursor 的 .cursorrules。它告诉 AI:
-
• 项目使用什么技术栈
-
• 代码应该遵循什么规范
-
• 文件应该如何组织
为什么用它?
不用 AGENTS.md:
-
• 每次都要在提示词里重复技术栈
-
• AI 生成的代码风格不统一
-
• 需要反复修改才能符合项目规范
使用 AGENTS.md:
-
• 一次定义,永久生效
-
• AI 自动遵循项目规范
-
• 生成的代码直接可用
创建 AGENTS.md
在项目根目录创建 AGENTS.md 文件:
# 项目规范
## 技术栈
- Bun.js + TypeScript
- Elysia 框架(高性能 Web 框架)
- SQLite 数据库(后续课程)
## 代码规范
- 使用 TypeScript 严格模式
- 统一返回格式 { success, data, message }
- 路由使用 RESTful 规范
- 所有 SQL 使用 :name 占位符(防注入)
## 文件结构
- index.ts - 主入口
- db.ts - 数据库连接(后续添加)
- routes/ - 路由定义(后续添加)
在 Trae 中使用
现在,让我们开始创建第一个后端服务!
第1步:安装运行环境(1分钟)
💡 提示:不想安装 Bun?用 Node.js 也可以!
如果你电脑上已经有 Node.js,可以直接跳到第2步,用 npm 代替 bun 安装依赖。
方案 A:安装 Bun(推荐,更轻量更快)
Bun 是什么?
一个超快的 JavaScript 运行时,开箱即用,无需配置。
🚀 为什么推荐 Bun?未来趋势洞察
2025年,Bun 被 Claude 母公司 Anthropic 收购。这意味着什么?
-
• AI 原生支持:未来 AI 自动建站工具很可能默认基于 Bun 运行时
-
• 全栈一体化:Bun = Node.js + Webpack + Jest + npm
-
• TSX 原生支持:直接运行 TypeScript + JSX
-
• 边缘计算:比 Node.js 更轻量,适合 IoT 和边缘部署
💡 预测:未来你只需要输入"帮我做一个电商网站",AI 就能直接生成基于 Bun 的完整全栈应用。
🔥 Bun 真的太强了! 启动速度快 4 倍,内存占用少一半。
包管理速度对比:
| 工具 | 安装时间 | 相对速度 | | :-- | :-- | :-- | | Bun | ~391ms | 基准 ⚡ | | pnpm | ~1,023ms | 2.6x 慢 | | Yarn | ~3,206ms | 8.2x 慢 | | npm | ~4,503ms | 11.5x 慢 |
💡
bun install比npm install快 11 倍!
强烈建议:尽量用 Bun!这是面向未来的投资。
安装命令:
# macOS / Linux
curl -fsSL https://bun.sh/install | bash
# Windows
powershell -c "irm bun.sh/install.ps1|iex"
📦 命令行下载失败? 可以使用网盘下载:123云盘:1859113306.share.123865.com/123pan/na8c…
下载后解压,将 bun.exe 放到系统 PATH 目录即可使用。
Windows 具体操作步骤:
-
1. 解压下载的文件,找到
bun.exe -
2. 将
bun.exe复制到C:\Windows\System32目录(需要管理员权限) -
3. 或者创建一个目录如
C:\bun,将bun.exe放进去,然后添加到 PATH:
-
• 右键"此电脑" → 属性 → 高级系统设置 → 环境变量
-
• 在"系统变量"中找到
Path,双击编辑 -
• 点击"新建",输入
C:\bun,确定保存
- 4. 打开新的命令提示符窗口,输入
bun --version验证
验证安装:
bun --version
# 输出类似:1.1.0
方案 B:使用 Node.js(如果你已有 Node.js)
如果你不想安装 Bun,Node.js 完全没问题!
检查 Node.js 版本:
node --version
# 建议 v18 以上
后续步骤中,把 bun 换成 npm 或 npx 即可:
-
•
bun add elysia→npm install elysia -
•
bun run index.ts→npx ts-node index.ts(需先安装ts-node)
✅ 搞定!环境准备完成。
第2步:创建项目(30秒)
Bun 用户
mkdir my-first-backend
cd my-first-backend
bun init -y
安装 Elysia:
bun add elysia
Node.js 用户
mkdir my-first-backend
cd my-first-backend
npm init -y
npm install typescript @types/node ts-node --save-dev
npx tsc --init
安装 Elysia 和 Node 适配器:
npm install elysia @elysiajs/node
修改 package.json 添加启动脚本:
{
"scripts": {
"dev": "ts-node index.ts"
}
}
这会生成一个基本的项目结构:
my-first-backend/
├── package.json
├── tsconfig.json
└── index.ts
(可选)创建 AGENTS.md:
echo "# 项目规范
## 技术栈
- Bun.js + TypeScript
- Elysia 框架
## 代码规范
- 统一返回格式 { success, data, message }
- RESTful API 设计" > AGENTS.md
第3步:复制提示词给 AI(1分钟)
在 Trae 中,使用 Auto 模型,复制这段提示词:
用 Elysia 框架创建一个 HTTP 服务器
要求:
1. 监听端口 3000
2. 实现两个路由:
- GET / 返回 { message: "Hello World", time: 当前时间 }
- GET /time 返回 { timestamp: 时间戳, iso: ISO格式时间 }
3. 添加请求日志:记录每个请求的方法和路径
4. 启动时打印:Server running at http://localhost:3000
请生成完整的 TypeScript 代码,保存到 index.ts
Trae 会生成类似这样的代码:
import { Elysia } from "elysia";
const app = new Elysia()
.onRequest(({ request }) => {
console.log(`${request.method} ${new URL(request.url).pathname}`);
})
.get("/", () => ({
message: "Hello World",
time: new Date().toLocaleString()
}))
.get("/time", () => {
const now = new Date();
return {
timestamp: now.getTime(),
iso: now.toISOString()
};
})
.listen(3000);
console.log(`Server running at http://localhost:${app.server?.port}`);
把代码复制到 index.ts 文件中。
💡 Node.js 用户注意:需要修改代码使用 Node 适配器
import { Elysia } from "elysia";
import { node } from "@elysiajs/node";
const app = new Elysia()
.get("/", () => ({ message: "Hello World" }))
.listen(3000, node); // ← 加上 node 适配器
第4步:运行!(30秒)
Bun 用户
bun run index.ts
Node.js 用户
npm run dev
看到输出:
Server running at http://localhost:3000
✅ 恭喜你,后端服务跑起来了!
第5步:测试接口(2分钟)
打开浏览器,访问:
http://localhost:3000
看到返回:
{
"message": "Hello World",
"time": "2024/1/15 10:30:00"
}
再访问:
http://localhost:3000/time
看到返回:
{
"timestamp": 1705312200000,
"iso": "2024-01-15T02:30:00.000Z"
}
查看终端日志:
GET /
GET /time
✅ 完美!你的第一个后端服务正常运行。
代码解析
让我们看看 AI 生成的代码,理解它在做什么:
import { Elysia } from "elysia";
const app = new Elysia() // 创建 Elysia 应用实例
.onRequest(({ request }) => { // 注册请求拦截器(日志)
console.log(`${request.method} ${new URL(request.url).pathname}`);
})
.get("/", () => ({ // 定义 GET / 路由
message: "Hello World",
time: new Date().toLocaleString()
}))
.get("/time", () => { // 定义 GET /time 路由
const now = new Date();
return {
timestamp: now.getTime(),
iso: now.toISOString()
};
})
.listen(3000); // 监听 3000 端口
对应我们上节课学的 5 步法:
|
步骤
|
代码体现
|
| :-- | :-- |
|
接收请求
| new Elysia()
创建应用,.listen() 监听端口
|
|
解析验证
| .get()
自动匹配路由和方法
|
|
业务处理
|
路由回调函数中返回不同的数据(时间、消息等)
|
|
操作数据
|
本例无数据库,直接返回当前时间
|
|
返回响应
|
直接返回对象,Elysia 自动序列化为 JSON
|
Elysia vs 原生 Bun.serve
|
特性
|
原生 Bun.serve
|
Elysia 框架
|
| :-- | :-- | :-- |
|
代码量
|
较多,需手动处理路由
|
简洁,链式 API
|
|
路由管理
|
手动 if/else 判断
|
声明式 .get()``.post()
|
|
中间件
|
需自行实现
|
内置 .onRequest()
|
|
类型安全
|
无
|
端到端类型推断
|
|
性能
|
快
|
更快(优化过的路由匹配)
|
常用中间件示例
Elysia 有丰富的官方插件生态,常用中间件使用示例:
import { Elysia } from "elysia";
import { cors } from "@elysiajs/cors"; // 跨域
import { swagger } from "@elysiajs/swagger"; // API 文档
import { jwt } from "@elysiajs/jwt"; // JWT 认证
import { staticPlugin } from "@elysiajs/static"; // 静态文件
const app = new Elysia()
// 跨域支持
.use(cors({
origin: "*", // 允许所有域名,生产环境建议指定具体域名
methods: ["GET", "POST", "PUT", "DELETE"]
}))
// Swagger API 文档(访问 /swagger)
.use(swagger({
documentation: {
info: {
title: "我的 API",
version: "1.0.0"
}
}
}))
// JWT 认证
.use(jwt({
secret: "your-secret-key",
exp: "7d" // 7天过期
}))
// 静态文件服务(public 目录)
.use(staticPlugin({
prefix: "/static", // 访问路径前缀
assets: "public" // 本地目录
}))
// 自定义中间件:统一响应格式
.onAfterHandle(({ response, set }) => {
// 如果已经是标准格式,直接返回
if (response && typeof response === "object" && "success" in response) {
return response;
}
// 包装成标准格式
return {
success: true,
data: response,
message: "操作成功"
};
})
// 错误处理中间件
.onError(({ code, error, set }) => {
console.error(`错误 [${code}]:`, error);
set.status = code === "NOT_FOUND" ? 404 : 500;
return {
success: false,
data: null,
message: error.message || "服务器内部错误"
};
})
.get("/", () => "Hello World")
.listen(3000);
安装这些插件:
# Bun
bun add @elysiajs/cors @elysiajs/swagger @elysiajs/jwt @elysiajs/static
# Node.js
npm install @elysiajs/cors @elysiajs/swagger @elysiajs/jwt @elysiajs/static
如果出错了怎么办?
问题1:端口被占用
错误信息:
error: Failed to start server. Is port 3000 in use?
解决: 换一个端口
.listen(3001) // 改成 3001
问题2:模块找不到
错误信息:
error: Cannot find module 'elysia'
解决: 安装依赖
bun add elysia
问题3:代码报错
把错误信息复制给 Trae:
我的代码报错了:
[粘贴错误信息]
请帮我修复。
问题4:浏览器访问没反应
检查:
核心收获
今天你用 5 分钟完成了:
✅ 安装 Bun 环境✅ 创建后端项目✅ 了解 AGENTS.md 的作用✅ 用 Trae 生成 Elysia 代码✅ 运行并测试服务
全程只写了 1 段提示词,0 行代码。
下节课预告
第3课:路由是什么?怎么设计好懂的 API?
我们将:
-
• 理解路由的概念
-
• 学习 RESTful API 设计
-
• 用 AI 生成一个用户管理 API
思考题:
试着修改提示词,让 AI 添加一个新接口 /hello?name=张三,返回 { message: "你好,张三" }。
欢迎在评论区分享你的提示词。
如果觉得有帮助,欢迎点赞、在看、转发。