Bun:一个让 Node 开发者原地起飞的 JS/TS 运行时

开头的话

先说一个最近让前端圈炸锅的消息------Bun 被 Anthropic 收购了。对,就是那个做出了 Claude 的 Anthropic。他们买 Bun 干嘛?给 Claude Code 当底层运行时。

这事听起来挺离谱的,一个 AI 公司去买一个 JS 运行时干嘛?但仔细一想就通了:Claude Code 每天要跑海量的 JS/TS 代码,对启动速度、执行效率的要求比一般 Web 应用高得多。Node 当然能跑,但在这种场景下,Bun 的优势就被放大了。

Bun 到底是个啥

简单说,Bun 就是一个能替代 Node.js 的东西,但它不只是运行时,还自带包管理器和打包工具。

用 Node 的时候你会发现一个很烦的事情:装包用 npm,跑代码用 node,配置 TypeScript 还得单独折腾 tsconfig 和一堆 loader。每个环节都需要额外折腾。

Bun 把这些全揉一块了。装好 Bun,TypeScript 直接就能跑,不需要你配任何东西。bun install 比你用过的任何包管理器都快一个量级,bun run 启动项目几乎感觉不到延迟。

说到底,Bun 跟 Node 做的事情一样,但它是从零开始重新设计的,没有 Node 十几年积累下来的历史包袱。底层用 Zig 写的,JavaScriptCore 引擎(就是 Safari 那个)替代了 V8。这两点让它比 Node 快得不是一星半点。

插一句 TypeScript

聊 Bun 绕不开 TypeScript,因为 Bun 对 TS 的支持是刻在骨子里的。

TypeScript 是微软搞的,本质就是 JavaScript 加上类型系统。Typescript 是 js 的超集------所有合法的 JS 代码本身就是合法的 TS 代码。它多出来的那部分,就是类型。

TS 做的事情不复杂:你写代码的时候给变量、参数、返回值标上类型,它在你编译的时候帮你检查有没有类型错误。检查完没问题了,就把类型全擦掉,生成干净的 JS。

这听起来好像没啥大用,但写过大型项目的人都知道,类型系统救命的时候多了去了。

JavaScript 的那些坑

JS 是弱类型语言,写起来很爽,出 bug 也很爽。

说几个最常见的场景。

第一个,浏览器里的输入框。你写了个 input,用户输了数字,你理所当然觉得拿到的是 number,该计算计算。但实际上 input.value 永远是字符串。你说你当然知道这个知识点------但凌晨三点赶需求的时候你就忘了,然后线上报了一堆 NaN。

html 复制代码
<input type="text" id="ipt">
<script>
const ipt = document.getElementById("ipt");
ipt.addEventListener("change", function(event) {
  console.log(event.target.value); // 永远是字符串,不是数字
})
</script>

第二个,+ 号的双重人格。+ 在 JS 里既做加法又做字符串拼接,它选哪个完全看操作数类型。你写着写着,一个数字和一个字符串凑一块了,它也不报错,默默给你拼了个字符串出来,然后这个字符串传到后面又参与了别的运算,最后结果歪到天边去了。

typescript 复制代码
function add(a: number, b: number): number {
  return a + b;
}

let a = 1;
let b = "2";
// add(a, b);  // TS 直接报错拦住你,根本不给犯错的机会
let c: number = add(a, Number(b)); // 必须显式转换

这种 bug 最恶心的地方在于它不报错。JS 的弱类型哲学是"能跑就行",类型不对它自己想办法给你隐式转换。小项目还好,几十万行代码的大项目,这种隐式转换引发的 bug 可能在系统里潜伏几个月才被发现。

TypeScript 就是在代码跑起来之前帮你把这些雷排掉。

为什么说 TS 已经是 AI Agent 时代的标配了

现在做 AI Agent 开发,TypeScript 基本是默认选择了。

AI 生成的代码量跟人写的不是一个级别。一个 Agent 一天能吐出几百个文件,这些代码要是没有类型检查直接进项目,维护成本会高到完全不可接受。

类型系统在这里扮演的角色不是"帮你写代码",而是"帮你守住底线"。AI 写的代码可能会有各种奇奇怪怪的类型问题,TS 编译器就是一道自动化的质量关卡。

而且现在主流 AI 编程工具的底层都在用 Bun,原因前面说了------启动快、TS 原生支持、零配置。AI 调用工具的时候不可能等你装半天依赖再跑,Bun 的毫秒级启动在这种场景下就是硬需求。

这大概也是 Anthropic 收购 Bun 的核心逻辑。

装一个试试

Windows 上装 Bun 很简单,打开 PowerShell 跑一行:

powershell 复制代码
powershell -c "irm bun.sh/install/windows | iex"

装完之后你就能用 bun init 初始化项目,用 bun install 装包,用 bun run 跑代码了。不需要单独装 Node,不需要配置任何东西,TypeScript 文件拖进来直接跑。

bash 复制代码
bun init        # 初始化一个新项目
bun install     # 安装依赖,速度碾压 npm
bun run index.ts  # 直接跑 TS 文件,不需要 ts-node

总结

Bun 不是"又一个 JS 运行时",它是对 Node 生态一次认真的重新思考。Node 很棒,它让 JS 脱离了浏览器的牢笼。但十几年过去了,很多东西可以做得更好------启动速度、TS 支持、包管理、开发者体验,Bun 在每个环节都给出了更优的解。

而 TypeScript 也不再是可选的"要不要学"了。在 AI 辅助开发越来越普及的当下,类型系统已经从"锦上添花"变成了"必要防线"。如果你还在纯 JS 栈上写稍大一点的项目,是时候切到 TS 了。

至于 Bun + TypeScript 这对组合,用一个装了 Bun 的开发来说就是:装完那一刻就能写代码,这种感觉,Node 生态给不了你。

相关推荐
小小小小宇2 小时前
AI Agent 核心流程与底层逻辑
前端
wuhen_n2 小时前
RAG 实战:语义检索 + 大模型生成精准问答
前端·langchain·ai编程
沉尘5882 小时前
ACE-GCM加解密微信小程序
前端
春风得意之时2 小时前
前端安装项目出现代理问题和ssl认证问题
前端·网络协议·ssl
问心无愧05132 小时前
ctf show web入门109
android·前端·笔记
粉末的沉淀2 小时前
vue:Vite项目中高效管理纯色SVG图标的方案
前端·javascript·vue.js
dotnet903 小时前
PDF 页面尺寸上限是 14400。iText 直接加载成功的大图可能超过这个限制,需要在 setPageSize 之前等比缩放。
前端·javascript·html
threelab3 小时前
Three.js 几何图形变换 | 三维可视化 / AI 提示词
开发语言·前端·javascript·人工智能·3d·着色器