40岁了,最近再学bun和ai。

Bun 1.3.14 上个月发了。

这是 1.3 系列的收官版。

1.3 这个版本线从发布到现在。

我看完 changelog。

就一个感受。

Bun 设计的API是真优雅 真简单。

今天就掰开讲讲。

一、SQL 客户端内置

以前连数据库。

得装 mysql2 或 pg。

还得自己写连接池。

代码又臭又长。

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。

看着就头疼。

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。

代码又长又难懂。

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 才是未来。

Bun.serve({
  port: 3000,
  fetch(req) {
    return new Response("HTTP/2 ready");
  },
});

Bun 1.3 默认就开 HTTP/2。

多路复用。

性能提升明显。

不用配置。

// HTTP/2 服务端推送示例
Bun.serve({
  port: 3000,
  fetch(req) {
    return new Response(
      `<html><script src="/app.js"></script></html>`,
      { headers: { "content-type": "text/html" } }
    );
  },
});

压测对比一下。

你就知道差多少。

五、bundler 大提速

前端项目打包。

慢得让人抓狂。

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 配置。

{
  "name": "my-app",
  "workspaces": ["packages/*"]
}

Bun 1.3 原生支持 workspace。

一个配置文件搞定。

bun install

依赖自动 link。

不用再装一堆工具了。

七、test runner 更稳

测试也得写。

Bun 自带 test。

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。

import index from "./index.html";

Bun.serve({
  port: 3000,
  routes: {
    "/": index,
  },
  development: true,
});

HTML 也能 import。

热更新自带。

省了一个 vite。

九、HTML imports 新玩法

Bun 1.3 还有个狠活。

HTML 文件能直接 import。

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。

// 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 了吗。

在这里插入图片描述

更多推荐