Rust版Bun1.4之前, 盘点Bun1.3新特性

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

相关推荐
恋猫de小郭1 小时前
如何让 AI 快速搭建一套生产 Agent ?全面理解 Agent 架构。
前端·人工智能·ai编程
Csvn1 小时前
Vite 构建缓存优化:二次构建从 15s 降到 2s 的实战方案
前端
晓得迷路了1 小时前
栗子前端技术周刊第 135 期 - Vite 8.1、Rspack 2.1、Babel 8.0...
前端·javascript·vite
你听得到112 小时前
用户说 App 卡,但说不清在哪?我把 Flutter 监控 SDK 升级成了链路观测工作台
前端·flutter·性能优化
kfaino9 小时前
码农的AI翻身(五)你好,我叫 Transformer
后端·aigc
To_OC10 小时前
LC 207 课程表:刚学图论那会儿,我连这是拓扑排序都没看出来
javascript·算法·leetcode
To_OC10 小时前
LC 208 实现 Trie 前缀树:曾被名字劝退,写完发现是送分题
javascript·算法·leetcode
天渺工作室11 小时前
实现一个adblock/adblock plus等浏览器广告拦截器检测插件
前端·javascript