普通视图

发现新文章,点击刷新页面。
昨天 — 2026年5月5日首页

第2课:5分钟!用 Trae AI 生成你的第一个后端服务(Bunjs + Elysia)

作者 铁皮饭盒
2026年5月5日 19:28

本文目标: 先建立全局认知,再让 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. 1. 解压下载的文件,找到 bun.exe

  2. 2. 将 bun.exe 复制到 C:\Windows\System32 目录(需要管理员权限)

  3. 3. 或者创建一个目录如 C:\bun,将 bun.exe 放进去,然后添加到 PATH:

  • • 右键"此电脑" → 属性 → 高级系统设置 → 环境变量

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

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

  1. 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: "你好,张三" }

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


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

昨天以前首页

成为AI全栈 - 第1课:后端到底是干嘛的?一张图拆解登录

作者 铁皮饭盒
2026年4月30日 09:58

本文目标: 先建立全局认知,再让AI写代码😁

一个常见的误解

很多人以为后端很难。

“要懂服务器、数据库、缓存、消息队列……”

“要学 Java、Python、Go……”

“要配环境、搭框架、写 SQL……”

其实,后端的核心逻辑非常简单。

今天用一张图,让你彻底理解后端是干嘛的。

图片

后端做什么?

前端发起接口请求。

后端: 接收请求  → 解析验证 →业务处理 → 数据库操作 → 返回响应

就这5步,没了。

以用户登录为例

用户在登录页面输入用户名和密码,点击“登录”。

第1步:接收请求

前端发送:POST/api/login,Body: { username: “张三”, password: “123456” }

后端路由匹配到 /api/login,交给登录处理函数。

// 监听请求
app.post('/api/login'(req, res) => {
  // 处理逻辑
})

第2步:解析验证

检查用户名和密码是否为空?格式是否正确?

如果为空 → 返回 400 “用户名和密码不能为空”,停止执行。

根据 username 去数据库查用户,用 bcrypt 比对密码。

密码错误 → 返回 401 “用户名或密码错误”。

第3步:业务处理

如果密码正确,生成 JWT Token(一个加密的字符串), 同时提取用户登录IP / 时间等。

第4步:操作数据

存储第三步数据到数据库。

第5步:返回响应

返回给前端:HTTP状态码: 200, 接口返回JSON数据

图片

前端拿到 Token,存储起来,后续请求带上它证明身份。 

nodejs + expres示例

🌟注意: 

1. 本文初期用js写后端, 帮助前端同学过渡, 后续会写py和java代码, 都是通过提示词让AI写😁

2. 下面代码大概看下就行, 后续文章会完善真读数据库, 反正都是AI直接生, 主要看提示词:基于express 生成登录接口 输入body参数(username,password), 返{"success":true,"data":{"token":"xxx","user":{"id":1,"name":"张三"}}} token要真验. 

下面是把提示词给deepseek生成的:

const express require('express');
const jwt require('jsonwebtoken');
const app express();

app.use(express.json());

// 模拟用户数据(实际应该查数据库)
const users = [
  { id: 1, username: 'zhangsan', password: '123456', name: '张三' },
  { id: 2, username: 'lisi', password: '123456', name: '李四' }
];

// 密钥(实际应放在环境变量)
const SECRET_KEY 'your-secret-key-123456';

app.post('/api/login', (req, res) => {
  const { username, password } = req.body;

  // 1. 验证用户名密码
  const user = users.find(u => u.username === username && u.password === password);

  if (!user) {
    return res.status(401).json({
      successfalse,
      error'用户名或密码错误'
    });
  }

  // 2. 生成真正的 JWT token
  const token = jwt.sign(
    { userId: user.id, username: user.username },
    SECRET_KEY,
    { expiresIn'7d' }  // 7天有效期
  );

  // 3. 返回结果
  res.json({
    successtrue,
    data: {
      token: token,
      user: {
        id: user.id,
        name: user.name
      }
    }
  });
});

app.listen(3000, () => {
  console.log('服务器已启动:http://localhost:3000');
});

核心结论

后端 = 接收请求  → 解析验证 →业务处理 → 数据库操作 → 返回响应

所有后端语言都在解决这5件事,只是语法不同。

学会用概念描述需求,AI 就能帮你生成任何语言(Bun.js / Python / Java)的代码。

后续

后端并没有那么复杂吧, 别着急, 今天先说这么多, 后续课程会继续拆解其他开发任务。

思考题

回想一下你平时调用的后端接口(比如获取用户列表、提交表单),试着用今天学的“5步法”拆解一下后端做了什么?

欢迎在评论区分享你的思考。

❌
❌