40岁了,最近再学bun和ai。
Bun 1.3.14 上个月发了。
这是 1.3 系列的收官版。
1.3 这个版本线从发布到现在。
我看完 changelog。
就一个感受。
Bun 设计的API是真优雅 真简单。
今天就掰开讲讲。
一、SQL 客户端内置
以前连数据库。
得装 mysql2 或 pg。
还得自己写连接池。
代码又臭又长。
bash
import { MySQLClient } from "bun";
const db = new MySQLClient({
host: "127.0.0.1",
port: 3306,
user: "root",
password: "123456",
database: "shop",
});
const users = await db.query("SELECT id, name FROM users LIMIT 10");
console.log(users);
Bun 1.3 自带 MySQL 客户端。
零依赖。
直接 import 就能用。
Prepared statement 也支持。
防 SQL 注入。
也省心了。
AI 写代码也省事。
不用纠结选 mysql2 还是 pg。
直接用 Bun 自带的就行。
二、Redis 客户端内置
缓存谁家不用。
以前 ioredis 是标配。
代码一堆 callback。
看着就头疼。
bash
import { redis } from "bun";
await redis.set("order:1001", "已支付");
const status = await redis.get("order:1001");
console.log(status);
Bun 把 Redis 客户端也内置了。
API 简单。
直连服务端。
Pipelining 也支持。
性能比 ioredis 还快一点。
不信你压测看看。
三、S3 文件操作
上传文件老写 SDK。
minio-js、aws-sdk。
代码又长又难懂。
bash
import { s3 } from "bun";
const f = s3.file("images/avatar.png");
await f.write(Bun.file("./avatar.png"));
const buf = await f.arrayBuffer();
console.log(buf.byteLength);
Bun 1.3 把 S3 也整进来了。
文件对象语义。
跟本地 fs 一样。
读写都简单。
不夸张说。
S3 操作这块省一半代码。
四、HTTP/2 默认开启
Node 一直 HTTP/1.1。
高并发下头部阻塞。
HTTP/2 才是未来。
bash
Bun.serve({
port: 3000,
fetch(req) {
return new Response("HTTP/2 ready");
},
});
Bun 1.3 默认就开 HTTP/2。
多路复用。
性能提升明显。
不用配置。
bash
// HTTP/2 服务端推送示例
Bun.serve({
port: 3000,
fetch(req) {
return new Response(
`<html><script src="/app.js"></script></html>`,
{ headers: { "content-type": "text/html" } }
);
},
});
压测对比一下。
你就知道差多少。
五、bundler 大提速
前端项目打包。
慢得让人抓狂。
bash
await Bun.build({
entrypoints: ["./src/main.tsx"],
outdir: "./dist",
target: "browser",
minify: true,
});
Bun 的 bundler。
底层是 Zig 写的。
打 React 项目。
比 webpack 快 10 倍不止。
这话真不夸张。
我自己测过。
一个 3MB 的项目。
打包就几百毫秒。
开发体验拉满。
六、workspace 终于有了
monorepo 现在是主流。
以前得 yarn workspaces。
还得 pnpm 配置。
bash
{
"name": "my-app",
"workspaces": ["packages/*"]
}
Bun 1.3 原生支持 workspace。
一个配置文件搞定。
bash
bun install
依赖自动 link。
不用再装一堆工具了。
七、test runner 更稳
测试也得写。
Bun 自带 test。
bash
import { test, expect } from "bun:test";
test("两数相加", () => {
expect(1 + 2).toBe(3);
});
test("异步加法", async () => {
const v = await Promise.resolve(5);
expect(v).toBe(5);
});
API 兼容 jest。
老代码迁过来。
改改 import 就行。
跑得还贼快。
八、前端 dev server 完善
写前端老启 vite。
Bun 直接当 dev server。
bash
import index from "./index.html";
Bun.serve({
port: 3000,
routes: {
"/": index,
},
development: true,
});
HTML 也能 import。
热更新自带。
省了一个 vite。
九、HTML imports 新玩法
Bun 1.3 还有个狠活。
HTML 文件能直接 import。
bash
import html from "./page.html";
console.log(html);
HTML 里的 JS、CSS。
Bun 自动提取。
打包时处理。
不用配 loader。
这波真省事。
展望:Rust 重构版
说完了 1.3。
再说说后面。
1.3.14 已经是 1.3 的句号。
下一个大版本。
就是 Rust 重构版了。
Bun 官方在重写引擎。
Zig 那部分。
打算换 Rust。
消息一出。
圈内就炸了。
为啥要换?
性能是核心。
Rust 的生态更成熟。
AI 也更擅长写 Rust。
bash
// Rust 重构版假想代码
Bun.serve({
port: 3000,
async fetch(req) {
const data = await Bun.redis.get("count");
return Response.json({ count: Number(data) });
},
});
AI 写 Rust 代码。
训练数据多。
生成质量稳。
我用 Cursor 写 Bun 项目。
AI 给的代码。
八九不离十。
这才是换 Rust 的真原因。
AI 时代的变化
提个客观现象。
现在写代码的逻辑变了。
以前是:
我想清楚 → 手写 → 调试。
现在是:
我想清楚 → AI 生成 → 我审 → 部署。
效率提升巨大。
但门槛也变了。
你得会审。
不会审的人。
AI 写啥就是啥。
早晚出大问题。
写在最后
Bun 1.3 把生态补齐了。
SQL、Redis、S3。
都内置。
真能干活了。
接下来就是 Rust 重构版。
性能又要起飞。
你还在用 Node?
建议试 Bun。
迁移成本不大。
AI 帮忙更快。
我这 40 的老开发。
都在跟。
你们也试试看。
评论区聊聊。
你用 Bun 了吗。
