Node.js新的竞争者Bun
2022年出现了一个新的Node.js竞争者,名字叫Bun,发音和中文的“棒”类似。1.0稳定版已经于今年9月份发布。值得大家关注。
Node.js已经是一个广为接受的JavaScript运行时环境了,当今的前端项目绝大部分都会用到Node.js。要想从稳定的Node.js的市场撕个口子,那一定要有独特的优势,足以让开发者考虑放弃Node.js,像一把尖刀一样插入进现在的生态。
Bun的优势
Bun貌似确实具有一些优势,咱们下面就看一下它有哪些优势:
- 几乎无缝的和Node.js兼容,几乎可以直接将Node.js替换,而无需改动代码。
- 原生支持Typescript(值得期待)。
- ES模块的
import和CommonJS模块require可以混用。 - 支持真正的热更新,而不是每次都重启。
- npm模块安装非常快(采用缓存机制,值得期待)。
- 内置打包功能比现有的大部分工具都快,尤其是远超Webpack(值得期待)。
- 内置自动化测试功能的速度远超Jest。
- 比Node.js快4倍,比Deno快2倍(值得期待)。
优势确实不少了,最关键的是它可以兼容Node.js现有的API,还支持Typescript,运行速度还快。如果这些优势保持,那Bun很有可能会夺去Node.js的一部分市场。
不过我们也看到,它并没有多少颠覆性的理念,不像Node.js刚问世时那样,带来了区别于多线程并发理念的单线程事件循环、异步非阻塞等理念,几乎掀起了服务端的革命。
Bun的背景
Bun刚开始由Jarred Sumner个人私下开发了一年多,公开后仅两个月就在GitHub上赢得了超过32000颗星,14000个discord会员。
现在Bun的背后是一个叫Oven的创业公司,已经获得了7百万美元的融资。 Oven公司将基于Bun来为JavaScript应用提供serverless、持续集成服务。
Bun的背后虽然是一个盈利性的公司,但是Bun本身是基于MIT许可证的,和Node.js一样。我们可以放心的去使用。
Bun的技术基础
Bun的JavaScript引擎是JavaScriptCore,一个由苹果公司开发的JavaScript开源引擎。JavaScriptCore的优势是更快的启动速度和更小的内存占用。区别于Node.js,Node.js基于谷歌的V8。
Bun由Zig语言开发,Zig也是一门比较新的系统级编程语言。区别于Node.js,Node.js主要由C++开发。
Bun的安装与简单使用
Bun目前还不支持Windows,只支持macOS、Linux、WSL(在Windows上跑Linux程序的技术),但是Bun正在致力于支持Windows。
安装Bun非常简单,网络非常顺畅:
curl -fsSL https://bun.sh/install | bash
运行JavaScript或者Typescript程序:
bun run index.ts
初始化一个空项目:
bun init
官网地址也非常简单:bun.sh