朋友上周跑来跟我吐槽——Node.js 慢得像头老黄牛,装个依赖得等一壶茶烧开。我说你咋不用 Bun?他一脸懵:那个小东西真敢用在生产环境?
没错,就是这个小东西。1.0 版本发布刚过一年,GitHub 星标逼近 80k。但别被数字骗了,这背后是一场针对开发者工具链的 精准外科手术。
快,是一种宗教体验
用过 Bun 的人都有种错觉:是不是换了一台电脑?启动一个 React 项目——Node 还在解析 package.json 呢,Bun 已经给你刷出 127.0.0.1:3000。这感觉像从机械硬盘跳到 NVMe,回不去了。官方那个 bench 图我盯着看了五分钟——请求吞吐量是 Node 的 4 倍,包安装快 25 倍。不是百分比,是倍数。

内核是 Zig 写的,JavaScriptCore 引擎,这些技术选择根本就是冲着 Node 的软肋去的。V8 启动慢?换。C++ 臃肿?用 Zig。npm 生态割裂?内置一个自己的包管理器,直接兼容 Node 模块——连转译器都给你塞进来了。什么 webpack,什么 babel,全成了历史包袱。
说实话,这策略野蛮得让人喜欢。过去十年,我们可被「分治」思想害惨了:包管理找 pnpm,打包用 webpack,转译用 tsc,运行靠 node。Bun 一句「我全都要」,就把桌子掀了。
包管理的降维打击?先别急着喊革命
pnpm 的粉丝肯定要拍桌子——Bun 的 bun install 号称快如闪电,但它那个二进制 lockfile 嘛……不,可,读。真遇上报错,你连手动修的机会都没有。这就是取舍,粗暴得不像开源项目。
更狠的是,它把 package.json 里的 scripts 全换成了自己的 bun run,背后其实走了一个叫「macro」的东西。你可以直接在代码里写 await Bun.sql`SELECT * FROM users`,根本不用 ORM 层包装。这思路太激进了——把数据库查询和文件读写拉平到语言级别。要是真铺开,多少中间件得失业?

但巨头们不会坐以待毙。Node.js 新版本悄悄加速了模块解析,Deno 也在拼命兼容 npm。未来 12 个月,我敢打赌——工具链整合会变成血海。谁先把「一键部署边缘函数」这个闭环跑通,谁就能吃下 Serverless 的大饼。Bun 的杀手锏是内置的 bun deploy?别开玩笑了,那只是个玩具。它需要云服务商级别的集成。我猜 Oven(Bun 背后的公司)迟早得搞一个 Bun Cloud,按调用次数收钱,就像 Vercel 对 Next.js 做的。
谁在为速度买单?商业化的阿喀琉斯之踵

现在 Bun 还是免费的。靠风投养着,员工二十来人。这模式能撑多久?开源项目变成商业公司,哪次不是一地鸡毛——看看 Docker 的前车之鉴。
不过,Jarred 这哥们有点意思。他曾在 Stripe 工作,深谙开发者工具怎么从 「痒点」变成「痛点」。Bun 的边际成本低得吓人:一次打包好的二进制文件,用户自己下载就完了,不需要中心化服务器。那盈利点在哪?托管服务的高溢价。想象一下:你把 Next.js 项目推上去,Bun Cloud 在 300+ 边缘节点瞬间起爆,冷启动 5ms——而且账单比 Lambda 便宜 60%。这饼画得是不是挺香?
但护城河太浅。Node 生态 20 年的积淀,不是靠速度就能一夜颠覆的。真正卡脖子的,是那些 用 C++ 写的原生模块。Bun 的兼容层再努力,碰上 bcrypt 这种硬骨头还是得跪。这玩意儿在 Node 里编译都得折腾半天,在 Bun 里直接报错——运行时不一样,ABI 全乱套。
所以,现在该怎么做?我的行动建议干脆利落:如果你的新项目是纯 TypeScript、没有历史包袱,立刻上 Bun,体验坐火箭的感觉。但别在生产环境上用 —— 除非你有能力把原生模块全部替换成纯 JS 实现,或者赌 Oven 公司两年内不会倒闭。别笑,选技术栈就是选生态赌未来。赌赢了,你比同行快三倍;赌输了,半夜起来迁移代码的泪,都是今天脑子进的水。