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