Bun 是一个新的、雄心勃勃的 JavaScript 工具集和运行时。早期采用者一直报告说 Bun 速度非常快——速度快到被一些人吹捧为 Node.js 杀手。好奇,我决定亲自检查一下 Bun 并将其与竞争对手进行对比。
真的像人们说的那么快吗?它有多稳定?它真的比 Node 更好吗?我可以将它与持续集成一起使用吗?
什么是Bun?
Bun 是 JavaScript 运行时系列的最新成员。它在 2018 年问世时一直在掀起波澜,与 Deno 相媲美。Bun位于 Node 和 Deno 之间。Bun 和 Deno 一样,开箱即用地支持 TypeScript,并提供对开发人员友好的功能,例如顶级等待和内置 Web API。但是,与 Deno 不同的是,Bun 旨在成为 Node、Webpack、Babel、Yarn 和 PostCSS 的替代品——所有这些都在一个简洁的包中。
另外,它还有一个非常可爱的吉祥物。
Bun 使用 MIT 和 LGPL2 许可证(由于 JavaScriptCore)发布,在撰写本文时,版本为 v0.1.4。
Bun 与 Deno 和 Node 相比如何?
虽然 Bun 受到 Node 和 Deno 的启发,但它显然也在尝试通过提供包含电池的工具集来改善开发体验和生产力。
Bun 采用了 Deno 的功能,例如作为单个二进制文件发布并具有原生 TypeScript 支持。
特征
bun
deno
TypeScript/TSX/JSX 支持
是的
是的
单个可执行文件
是的
是的
内置测试运行器
是(开发中)
是的
内置 Web API(获取、WebSocket 等)
是的
是的
顶级等待
是的
是的
npm 兼容性
是的
不兼容
是的
部分的
tsconfig.json 支持
是的
WebAssembly 支持
是的
是的
内置 linter 和格式化程序
是的
权限系统
是的
包清单格式
package.json
不适用
模块支持
ES 模块,CommonJS
ES 模块
协议
MIT,LGPL2
MIT
JS引擎
JavaScriptCore
V8
齐格,C++
锈,东京
与 Node 相比,Bun 在努力保持兼容的同时提供了更多的功能:
特征
npm 兼容性
是的
是的
节点兼容性
是(测试版)
是的
单个二进制
是的
内置捆绑器和转译器
是的
原生 TypeScript 支持
是的
包清单格式
package.json
package.json
锁定文件格式
二进制
JSON
本机实时重载
是的
内置.env,.toml支持
是的
顶级等待
是的
仅在 ES 模块上
JS引擎
JavaScriptCore
V8
语言
zig,C++
C、C++
协议
MIT,LGPL2
MIT,BSD
然而,处于测试阶段意味着 Bun仍有一些怪癖:
- 文档是有限的,但是Bun 的 Discord非常活跃并且是一个很好的知识来源。
- 没有本机 Windows 支持(但适用于 WSL)
- Bun 在安装包时可能会卡住,fetch 不可靠,而且,虽然我从来没有发生过,但 Bun 偶尔会出现段错误。
- Bun 还不是 100% 兼容 Node。并非每个 npm 包都有效。例如,Express 目前还没有功能。
- 发布到 npm 注册表不起作用。
- 在 API 和 CLI 稳定之前,会发生各种重大更改。
Bun 有一些独特的生活质量特征:
- 快速内置 sqlite3 模块(MySQL 和 PostgreSQL 也在计划中)
- 开箱即用的.env,.toml和 CSS 支持(不需要额外的加载器)
- React 和 Next.js 的内置框架支持和优化
- 内置外部函数接口 (FFI),用于对 C、Rust 或 Kotlin 等 ABI 支持语言的低级调用
- 将错误复制为 Markdown 的选项(用于快速共享)
谢谢大家阅读,喜欢的朋友请关注点赞转发,带你了解最新技术趋势。
热门跟贴