Node.js 替代品 Bun 现已正式发布

JavaScript 工具包 Bun 1.0 发布

JavaScript 工具包 Bun 的 1.0 版本已正式发布,旨在成为 Node.js 的直接替代品,因其速度和易用性在 JavaScript 和无服务器社区中引起了广泛关注。

Bun 的设计目标与功能

Bun 是一个快速工具包,用于运行、构建、测试和调试 JavaScript 和 TypeScript,与 Node.js 和基于 Rust 的 Deno 竞争。Bun 的创建者兼 Oven 公司 CEO Jarred Sumner 表示,Bun 的目标是消除 JavaScript 工具链的复杂性和缓慢,同时保留 JavaScript 的优点和开发者熟悉的约定。

Bun 使用 Zig 编写,包含以下组件:

  • 运行时
  • 包管理器
  • 测试运行器
  • 打包工具
  • 包运行器

Bun 内置支持 Node API,包括 fspathnet 等模块,以及 __dirnameprocess 等全局变量,并兼容 Node.js 的模块解析算法(node_modules)。

社区反应与性能比较

在 Reddit 和 Hacker News 上,开发者对 Bun 的性能进行了广泛讨论,将其与 Rust、Deno 和 Node.js 进行比较。尽管部分开发者质疑 Bun 1.0 的发布是否过早,但多数人承认其在包安装、构建时间和性能方面的优势。

Node.js 核心贡献者 Matteo Collina 对 Bun 的 Node.js 兼容性提出质疑,认为其并非真正的直接替代品,许多内部细节存在差异。然而,Famly 工程总监 Christian Kjær 表示,他在迁移一个大型前端单体应用时只需进行少量代码修改,而部分后端服务甚至无需更改。

兼容性与生态系统支持

据 Sumner 介绍,Bun 已针对 npm 上最流行的 Node.js 包进行了测试,并支持 Express、Koa 和 Hono 等服务器框架。然而,Collina 指出,Bun 目前不支持 Fastify 或 Pino 等模块,并批评其未充分考虑向后兼容性。

Bun 在无服务器领域的潜力

Bun 的快速性能吸引了无服务器开发者的关注。Ampt 公司 CEO Jeremy Daly 表示,Bun 的早期基准测试令人印象深刻,并探讨了其在 AWS Lambda 上是否可能优于 Node.js 运行时的可能性。

AWS 高级软件开发工程师 Mitchell Kossoris 在文章中进行了初步基准测试,发现 Node.js 的冷启动时间更少,但 Bun 在 API Gateway 响应时间上快 50%。他预测 Bun 有可能超越 Node.js 成为 JavaScript 和 TypeScript 开发的行业默认运行时,并透露 AWS Lambda 正在考虑将 Bun 作为原生运行时支持。

开源与未来计划

Bun 采用 MIT 许可证,并致力于实现完全的 Node.js API 兼容性。

阅读 22
0 条评论