第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 理解了后端的核心逻辑:

bash 复制代码
接收请求 → 解析验证 → 业务处理 → 数据库操作 → 返回响应

今天,我们用 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

bash 复制代码
# Node.js 用户安装
npm install elysia
npm install @elysiajs/node  # Node 适配器
bash 复制代码
// 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 文件:

bash 复制代码
# 项目规范

## 技术栈
- 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 installnpm install11 倍

强烈建议 :尽量用 Bun!这是面向未来的投资

安装命令:

bash 复制代码
# 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
    1. bun.exe 复制到 C:\Windows\System32 目录(需要管理员权限)
    1. 或者创建一个目录如 C:\bun,将 bun.exe 放进去,然后添加到 PATH:
  • • 右键"此电脑" → 属性 → 高级系统设置 → 环境变量

  • • 在"系统变量"中找到 Path,双击编辑

  • • 点击"新建",输入 C:\bun,确定保存

    1. 打开新的命令提示符窗口,输入 bun --version 验证

验证安装:

bash 复制代码
bun --version
# 输出类似:1.1.0

方案 B:使用 Node.js(如果你已有 Node.js)

如果你不想安装 Bun,Node.js 完全没问题

检查 Node.js 版本:

bash 复制代码
node --version
# 建议 v18 以上

后续步骤中,把 bun 换成 npmnpx 即可:

  • bun add elysianpm install elysia

  • bun run index.tsnpx ts-node index.ts(需先安装 ts-node

搞定!环境准备完成。


第2步:创建项目(30秒)

Bun 用户

bash 复制代码
mkdir my-first-backend
cd my-first-backend
bun init -y

安装 Elysia:

bash 复制代码
bun add elysia

Node.js 用户

bash 复制代码
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 适配器:

bash 复制代码
npm install elysia @elysiajs/node

修改 package.json 添加启动脚本:

bash 复制代码
{
  "scripts": {
    "dev": "ts-node index.ts"
  }
}

这会生成一个基本的项目结构:

bash 复制代码
my-first-backend/
├── package.json
├── tsconfig.json
└── index.ts

(可选)创建 AGENTS.md

bash 复制代码
echo "# 项目规范

## 技术栈
- Bun.js + TypeScript
- Elysia 框架

## 代码规范
- 统一返回格式 { success, data, message }
- RESTful API 设计" > AGENTS.md

第3步:复制提示词给 AI(1分钟)

在 Trae 中,使用 Auto 模型,复制这段提示词:

bash 复制代码
用 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 会生成类似这样的代码:

bash 复制代码
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 适配器

bash 复制代码
import { Elysia } from "elysia";
import { node } from "@elysiajs/node";

const app = new Elysia()
  .get("/", () => ({ message: "Hello World" }))
  .listen(3000, node);  // ← 加上 node 适配器

第4步:运行!(30秒)

Bun 用户

bash 复制代码
bun run index.ts

Node.js 用户

bash 复制代码
npm run dev

看到输出:

bash 复制代码
Server running at http://localhost:3000

恭喜你,后端服务跑起来了!


第5步:测试接口(2分钟)

打开浏览器,访问:

bash 复制代码
http://localhost:3000

看到返回:

bash 复制代码
{
  "message": "Hello World",
  "time": "2024/1/15 10:30:00"
}

再访问:

bash 复制代码
http://localhost:3000/time

看到返回:

bash 复制代码
{
  "timestamp": 1705312200000,
  "iso": "2024-01-15T02:30:00.000Z"
}

查看终端日志:

bash 复制代码
GET /
GET /time

完美!你的第一个后端服务正常运行。


代码解析

让我们看看 AI 生成的代码,理解它在做什么:

bash 复制代码
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 有丰富的官方插件生态,常用中间件使用示例:

bash 复制代码
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);

安装这些插件:

bash 复制代码
# Bun
bun add @elysiajs/cors @elysiajs/swagger @elysiajs/jwt @elysiajs/static

# Node.js
npm install @elysiajs/cors @elysiajs/swagger @elysiajs/jwt @elysiajs/static

如果出错了怎么办?

问题1:端口被占用

错误信息:

bash 复制代码
error: Failed to start server. Is port 3000 in use?

解决: 换一个端口

bash 复制代码
.listen(3001)  // 改成 3001

问题2:模块找不到

错误信息:

bash 复制代码
error: Cannot find module 'elysia'

解决: 安装依赖

bash 复制代码
bun add elysia

问题3:代码报错

把错误信息复制给 Trae:

bash 复制代码
我的代码报错了:
[粘贴错误信息]

请帮我修复。

问题4:浏览器访问没反应

检查:


核心收获

今天你用 5 分钟完成了:

✅ 安装 Bun 环境✅ 创建后端项目✅ 了解 AGENTS.md 的作用✅ 用 Trae 生成 Elysia 代码✅ 运行并测试服务

全程只写了 1 段提示词,0 行代码。


下节课预告

第3课:路由是什么?怎么设计好懂的 API?

我们将:

  • • 理解路由的概念

  • • 学习 RESTful API 设计

  • • 用 AI 生成一个用户管理 API


思考题:

试着修改提示词,让 AI 添加一个新接口 /hello?name=张三,返回 { message: "你好,张三" }

欢迎在评论区分享你的提示词。


如果觉得有帮助,欢迎点赞、在看、转发。

相关推荐
金銀銅鐵1 小时前
[git] 浅解 git reset 命令
git·后端
之歆2 小时前
DAY13_CSS3进阶完全指南 —— 背景、边框、文本、渐变、滤镜与 Web 字体(下)
前端·css·css3
xiaoye37082 小时前
Spring 事务传播机制 + 隔离级别
java·后端·spring
剑神一笑2 小时前
CSS 阴影生成器:从单层到多层叠加的艺术
前端·css·css3
lljss20202 小时前
1. NameServer 域名服务器---NS
linux·服务器·前端
anOnion3 小时前
构建无障碍组件之Tooltip Pattern
前端·html·交互设计
陈随易3 小时前
为什么今天还会有新语言?MoonBit 想解决什么问题?
前端·后端·程序员
西洼工作室3 小时前
unipp+vue3+python h5+app极验验证码集成全流程解析
前端·uni-app·全栈·极验