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最佳运行时会被易主。