100s 带你了解 Bun 为什么这么火

1995 年, JavaScript 诞生,主要用于广告弹窗。

2009 年,Node.js 诞生,JS 可以写后端了。

然而这是罪恶的开始,之后 JS 发展出了世界上最复杂的工具链。

于是写一个 Web 项目,你需要 Node.js 作为运行环境,Npm 作为包管理器,Webpack 作为打包工具,Jest 作为测试,还要用 Babel 转译,还要写一大堆没人看懂的配置文件。

这样的痛苦想必你已经体会到了。

2021 年,Bun 说:"为什么不能在运行时就完成所有得事情呢?"

于是它火了。

Bun 是什么?

Bun 本质上是一个 JavaScript 运行时,类似于 Node.js,但极其注重性能。

为了实现高性能,Bun 的核心策略是将:

  1. Node.js 的 C++ 替换成 Zig

  2. Node.js 的 V8 引擎替换成 Safari 使用的 JavaScript Core

这确实让 Bun 取得了不错的性能测试成绩。

但 Bun 真正革命性的地方在于它不仅仅是一个运行时。

它取代了你的打包工具,于是你可以直接写 TypeScript 或 JavaScript,而不用做任何配置。

它取代了你的测试框架和包管理器,甚至内置数据库驱动程序,同时又保持了与 Node.js 生态的兼容性。

从此以后,你只用一个工具就可以完成所有任务。

当然直接说还是有些抽象,我们直接看代码吧。

Bun 的使用

安装 Bun:

bash 复制代码
curl -fsSL https://bun.sh/install | bash

创建新项目:

bash 复制代码
bun init

现在你已经可以编写 TypeScript 代码了。

现在我们搭建一个 Web 服务器,不需要 express,只需要:

javascript 复制代码
const server = Bun.serve({
  port: 3000,
  routes: {
    "/": () => new Response("Bun!"),
  },
});

console.log(`Listening on ${server.url}`);

运行 bun run index.ts 你就可以直接看到效果。

如果你想操作数据库,直接写:

javascript 复制代码
import { Database } from "bun:sqlite";
const db = new Database("./app.sqlite");

如果你想使用 Redis,直接写:

javascript 复制代码
import { redis } from "bun";

// 设置 Key
await redis.set("greeting", "Hello from Bun!");

// 读取数据
const cachedDate = await redis.exists("greeting");

如果你需要安装包,直接运行:

javascript 复制代码
# 安装速度比 npm 快 25 倍
bun install

如果你想写测试,直接写:

javascript 复制代码
// 内置测试工具
import { test, expect } from "bun:test";

test("2 + 2 = 4", () => {
  expect(2 + 2).toBe(4);
});

为什么要关注 Bun?

Bun 本身其实已经很火了。

2025 年底,Anthropic 收购 Bun,更是为 Bun 的发展添了一把柴。

Bun 现在已经普遍被用于 Claude Code 等工具、云平台上的 Serverless Functions 等,这预示着它正在成为 JavaScript 生态系统中的重要力量。

所以如果你正在学 JavaScript,或者想尝试新工具,Bun 值得一看。

即使现在不用,了解这个"未来趋势"也会让你对前端生态有更深的理解。

我是冴羽,10 年笔耕不辍,专注前端领域,更新了 10+ 系列、300+ 篇原创技术文章,翻译过 Svelte、Solid.js、TypeScript 文档,著有小册《Next.js 开发指南》、《Svelte 开发指南》、《Astro 实战指南》。

欢迎围观我的"网页版朋友圈",关注我的公众号:冴羽(或搜索 yayujs),每天分享前端知识、AI 干货。

相关推荐
Shi_haoliu6 小时前
openClaw源码部署-linux
前端·python·ai·openclaw
程序员小寒7 小时前
前端性能优化之白屏、卡顿指标和网络环境采集篇
前端·javascript·网络·性能优化
烛阴7 小时前
Claude CLI AskUserQuestion 工具详解:让 AI 开口问你
前端·claude
wal13145207 小时前
OpenClaw教程(九)—— 彻底告别!OpenClaw 卸载不残留指南
前端·网络·人工智能·chrome·安全·openclaw
mon_star°8 小时前
在TypeScript中,接口MenuItem定义中,为什么有的属性带问号?,有的不带呢?
前端
牛奶8 小时前
分享一个开源项目,让 AI 辅助开发真正高效起来
前端·人工智能·全栈
次顶级9 小时前
表单多文件上传和其他参数处理
前端·javascript·html
why技术9 小时前
我拿到了腾讯QClaw的内测码,然后沉默了。
前端·后端
谪星·阿凯10 小时前
XSS漏洞解析博客
前端·web安全·xss