Bun 能否取代 Nodejs ? 谁才是JavaScript Runtime 最后的王者?

Nodejs 的出现,为前端带来无限可能;一经问世,前端的工作方式发生了翻天覆地的变化;没想到第一个被干掉的竟然是当年前端界的扛把子“Jquery”;

随着Npm包的不断增长,庞大的node_modules就像一座大山,让开发者喘不过气。

写过NodeJS的同学都会有一个体会,自己只写了几行代码,但是要安装的包竟然达到几个G,可能有些夸张,但是大量的node_modules真的很令人崩溃。

就在nodejs让人头疼的时候,一款号称“nodejs 杀手”的替代品“bun”出现了。

据Bun官方介绍,Bun 是一种 “all-in-one” 的JavaScript运行时。

有没有被震撼到,all-in-one!当我试着使用了Bun一段时间之后,得到了一个结论。

这玩意确实很厉害,但是似乎又缺点什么。

既然Bun 这么厉害,那么它都有哪些独特之处呢?

Bun 特性:

  • 快速启动。它在本地计算机、服务器或边缘运行您当前的 JavaScript 和 TypeScript 应用程序或脚本。
  • 快速运行性能。Bun 并没有采用V8,而是使用了更快的JavaScriptCore。
  • 凝聚力。Bun 是一个完整的工具包,包括捆绑器、转译器和包管理器。

从bun 公布的测试结果,server端渲染来看,bun 确实比nodejs、deno快至少3倍以上。

当然Bun作为“nodejs 替代者”;

还包含了以下特性:

  • 实现了Web Api,可以获取WebSocket和ReadableStream
  • 实现Node的node_modules解析算法,你可以在bun中直接使用npm包
  • 内置转移器,转译每个文件,TypeScript和JSX可以直接使用。
  • 支持,来自"paths""jsxImportSource"tsconfig json文件。
  • 自动从.env文件加载环境变量
  • 内置bun:sqlite
  • 实现了大部分Node-API,所以很多原生Node.js模块都可以正常工作。

从以上特性来看,bun 所要做的不光光是解决JavaScript runtime的问题,更是要把之前nodejs 支持的特性全部兼容;所以才有了“all-in-one”的口号。

当然,除了这些优点,bun 目前还有很多问题待解决;

最大的一个问题是Bun目前使用的zig开发语言也正在开发期,目前最新的版本还在beta,未正式发布,前途未卜。

第二个比较大的问题是bun目前只支持 mac、linux、windows下需要使用 WSL!

我想说,难道bun的作者是忽略了windows用户还是自己只有mac?

还有更大的一个问题是bun 的生态系统如何建立? 是继续使用Npm?

不过话说回来,Bun 还很年轻,从目前来看,它的优势也很明显;

未来一切顺利的话,也许JavaScript最佳运行时会被易主。

THE END