Node.js新的竞争者:Bun

297 阅读3分钟

Node.js新的竞争者Bun

2022年出现了一个新的Node.js竞争者,名字叫Bun,发音和中文的“棒”类似。1.0稳定版已经于今年9月份发布。值得大家关注。

Node.js已经是一个广为接受的JavaScript运行时环境了,当今的前端项目绝大部分都会用到Node.js。要想从稳定的Node.js的市场撕个口子,那一定要有独特的优势,足以让开发者考虑放弃Node.js,像一把尖刀一样插入进现在的生态。

Bun的优势

Bun貌似确实具有一些优势,咱们下面就看一下它有哪些优势:

  1. 几乎无缝的和Node.js兼容,几乎可以直接将Node.js替换,而无需改动代码。
  2. 原生支持Typescript(值得期待)。
  3. ES模块的import和CommonJS模块require可以混用。
  4. 支持真正的热更新,而不是每次都重启。
  5. npm模块安装非常快(采用缓存机制,值得期待)。
  6. 内置打包功能比现有的大部分工具都快,尤其是远超Webpack(值得期待)。
  7. 内置自动化测试功能的速度远超Jest。
  8. 比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