🗄️ SQLite(bun:sqlite)

内置 SQLite 支持,无需安装依赖。

typescript
import { Database } from "bun:sqlite";

const db = new Database("app.db");

// 创建表
db.run(`
  CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    name TEXT,
    email TEXT
  )
`);

// 插入
db.run("INSERT INTO users (name, email) VALUES (?, ?)", ["Alice", "alice@example.com"]);

// 查询
const users = db.query("SELECT * FROM users").all();
const user = db.query("SELECT * FROM users WHERE id = ?").get(1);

// 关闭
db.close();

🐘 PostgreSQL / MySQL

typescript
// PostgreSQL
const sql = Bun.sql("postgresql://user:pass@localhost/db");

const users = await sql`SELECT * FROM users`;
const user = await sql`SELECT * FROM users WHERE id = ${1}`;

// 插入
await sql`INSERT INTO users (name) VALUES (${"Alice"})`;

// MySQL
const mysql = Bun.sql("mysql://user:pass@localhost/db");
const results = await mysql`SELECT * FROM users`;

🔴 Redis

typescript
const redis = Bun.redis("redis://localhost:6379");

// 基础操作
await redis.set("key", "value");
const value = await redis.get("key");

// 带过期
await redis.set("session", "data", { ex: 3600 }); // 1 小时过期

// 其他命令
await redis.del("key");
await redis.incr("counter");
await redis.lpush("list", "item");
await redis.publish("channel", "message");

☁️ S3 存储

typescript
const s3 = new Bun.S3({
  accessKeyId: "your-key",
  secretAccessKey: "your-secret",
  bucket: "my-bucket",
  region: "us-east-1",
});

// 上传
await s3.write("file.txt", "Hello World");

// 下载
const content = await s3.file("file.txt").text();

// 列出文件
const files = await s3.list({ prefix: "uploads/" });

// 删除
await s3.delete("file.txt");

📝 HTMLRewriter

高性能 HTML 解析和重写。

typescript
const rewriter = new HTMLRewriter()
  .on("h1", {
    element(el) {
      el.setInnerContent("Modified Title");
    },
  })
  .on("a[href]", {
    element(el) {
      el.setAttribute("target", "_blank");
    },
  });

const response = new Response("

Original

Link"); const modified = rewriter.transform(response); const html = await modified.text();

🌐 FFI(外部函数接口)

调用 C/C++ 动态库。

typescript
import { dlopen, FFIType } from "bun:ffi";

const lib = dlopen("./libmylib.so", {
  add: {
    args: [FFIType.int, FFIType.int],
    returns: FFIType.int,
  },
});

const result = lib.symbols.add(1, 2); // 3