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

相关推荐
ClickHouseDB4 小时前
ClickHouse .NET 驱动程序新特性:从 1.0 到 1.3 的演进之路
java·前端·windows
雪宫街道4 小时前
SpringBoot - POI实现Excel 导入与导出
spring boot·后端·excel
bitbrowser4 小时前
Gmail注册要求手机号如何解决?哪些情况可以不填手机号
前端·指纹浏览器·gmail
LCG米4 小时前
STM32 HardFault故障定位实测:压栈帧寄存器解析、CFSR故障源判读与出错地址回溯
前端·javascript·stm32·单片机·嵌入式
夏幻灵4 小时前
Express 静态资源托管详解:从本地 HTML 到 express.static()
前端·html·express
打工仔折腾 AI4 小时前
让时序预测真正参与决策:TimechoAI 工程化落地与管线设计实践
人工智能·后端·python·算法·机器学习·性能优化
CarIise4 小时前
Spring MVC入门与执行流程
后端
yyuuuzz4 小时前
云服务器部署 web 项目的进程常驻记录
运维·服务器·前端·阿里云·云计算·aws
持敬chijing4 小时前
白盒测试与代码审计-JS 数据逆向
javascript·网络·安全·web安全·网络安全·网络攻击模型·安全威胁分析