Bun.js新一代js运行环境,最快的javascript运行时
BUN 是一款JavaScript执行环境,原生支持 JavaScript、TypeScript 及JSX/TSX,以运行效率快为显著特点。2024年8月,BUN发布1.1.22版本更新,重点优化了执行性能并大幅降低内存占用,同时增强了对 Node.js 的兼容性支持。

Bun是Node.js和Deno的竞争对手,是一个新的JavaScript运行时。在本文中,我们将介绍Bun 1.0,以及它可能让你尝试去使用的理由。
Bun文档:https://www.bunjs.com.cn
Bun 的诞生源于是对 Node.js 生态的反思:
- 性能瓶颈:Bun团队认为Node.js 的 V8 引擎和 npm 依赖管理在高并发、大型项目中表现不足
- 工具链碎片化:开发者需组合 Webpack、Babel、Jest 等工具,配置复杂且效率低
- 现代化需求:TypeScript 和 ES 模块逐渐成为主流,但 Node.js 的兼容性支持滞后
解决 JavaScript 工具链的痛点
- Bun 的诞生源于是对 Node.js 生态的反思:
- 性能瓶颈:Bun团队认为Node.js 的 V8 引擎和 npm 依赖管理在高并发、大型项目中表现不足
- 工具链碎片化:开发者需组合 Webpack、Babel、Jest 等工具,配置复杂且效率低
- 现代化需求:TypeScript 和 ES 模块逐渐成为主流,但 Node.js 的兼容性支持滞后
2022 年,前 Stripe 工程师 Jarred Sumner 发布 Bun,目标是通过底层优化和工具整合,提升开发效率。其设计哲学是“All-in-One”,即用一个工具覆盖全流程, bun就此横空问世.
Bun 基于 Zig 语言和 JavaScriptCore 引擎(Safari 的引擎),官方宣称 启动速度比 Node.js 快 4 倍,包管理速度比 npm 快 25 倍. 并且内置了打包器、包管理器(替代 npm/yarn..)、测试运行器等
而且官方同时还宣称: 支持 90% 的 Node.js API 和 npm 生态,同时实现了 Web 标准化api(如 fetch、WebSocket)
那这是什么个意思呢? 这意味着按照官方的说法, 你只要安装了 Bun 就不需要在配置什么webpack,jest 捣鼓package哪些乱七八糟的东西了,直接一个build命令全部搞定,而且90%以上的场景都支持。 怎么样? 爽不爽? 痛不痛快?
那现在问题来了, 既然bun.js这么强大, 那为什么迟迟没有取代node.js, 甚至3年过去了还是停留在实验阶段?
Bun优势
Bun 是一个全新的 JavaScript 运行时,类似于 Node.js 和 Deno,它专注于提供出色的性能和开发者体验。Bun 的一些特点包括:
快速的性能:Bun 旨在提供高性能,无论是启动时间、执行速度还是安装依赖包的速度。
兼容性:Bun 致力于与现有的 JavaScript 生态系统兼容,包括 Node.js 的软件包。
内建的软件包管理器:Bun 内置了一个软件包管理器,这意味着你可以直接使用它来安装 npm 包,无需额外的工具。
现代 JavaScript:Bun 支持现代 JavaScript 语法和特性,让开发者能够使用最新的 JavaScript 特性编写代码。
原生的 Web API:Bun 提供了许多浏览器中的 Web API,这使得编写服务器端代码与编写客户端代码更为相似。
Bun 还在积极开发中,可能会添加更多特性和改进。
什么是运行时
“运行时”(Runtime)在计算机编程中指的是一个软件程序执行时提供的环境,其中包含了执行程序所必需的库、调试和其他支持功能。在 JavaScript 的世界中,运行时负责解释执行 JavaScript 代码,并提供可以由 JavaScript 代码调用的 API,例如处理文件系统、网络通信、定时器等。
就 JavaScript 语言而言,最著名的运行时环境是浏览器和 Node.js。浏览器提供了一个针对客户端脚本的运行环境,允许 JavaScript 与网页交互,控制 DOM 元素,响应事件等。而 Node.js 则提供了一个服务器端的运行环境,扩展了 JavaScript 的能力,使其可以进行文件系统操作、TCP/IP 通信等不受浏览器安全限制的操作。
Bun 运行时,旨在服务于现代 JavaScript 生态系统。它有三个主要的设计目标:
速度:Bun 启动迅速,运行快速。它扩展了 JavaScriptCore,这是为 Safari 打造的注重性能的 JS 引擎。随着计算转向边缘计算,这一点至关重要。
优雅的 API: Bun 提供了一组最小的、高度优化的 API,用于执行常见任务,比如启动 HTTP 服务器和写文件。
统一的开发体验:Bun 是一个用于构建 JavaScript 应用的完整工具包,包括一个软件包管理器、测试运行器和打包工具。
Bun 被设计为 Node.js 的替代品。它固有地实现了数百个 Node.js 和 Web API,包括 fs、path、Buffer 等。
Bun 的目标是运行世界上大多数的服务器端 JavaScript,并提供工具以提高性能,降低复杂性,并成倍增加开发人员的生产力。
诞生背景
Bun 的诞生背景和它的开发都是为了满足现代 JavaScript 生态系统中日益增长的性能需求和开发体验改进的需求。随着 JavaScript 应用程序日益复杂,开发者社区对工具的性能和效率要求越来越高。Bun 团队看到了这种需求,并试图通过创建一个高速、高效且功能丰富的新运行时来解决这些问题。
Node.js 性能并不差,实际上它已经足够强大,可以胜任广泛的服务器端应用。然而,Node.js 是一个相对较老的平台,它的设计并不总是能够充分利用现代硬件的性能,或者满足现代开发流程中的所有需求。还有一些历史遗留问题,如对老旧回调模式的依赖,以及在一些场景中的性能瓶颈。
Deno 是由 Node.js 的创始人之一 Ryan Dahl 启动的项目,目的是创建一个更安全、更现代的 JavaScript 运行时环境。Deno 试图解决 Node.js 存在的一些设计问题,比如通过提供首级的异步支持改进 API,引入 TypeScript 作为一级语言支持,以及实现更加安全的权限模型等。
bun 的一些性能数据对比





浙公网安备 33010602011771号