68K star!24年替换Node.js的最佳选择

Node.js已经有了超过14年的历史,虽然它一直有着不错的表现,但是关联的JavaScript 工具链正变得缓慢而复杂。我们今天要介绍的开源项目是一个快速的全能工具包,用于运行、构建、测试和调试 JavaScript 和 TypeScript,它就是:Bun

Bun是什么

Bun 的核心是一个快速的 JavaScript 运行时,旨在取代 Node.js。但它并不仅仅是一个运行时,它也是一个包管理器(类似 Yarn、 NPM、 PNPM),一个构建工具(类似 Webpack、 ESBuild、 Parcel) ,一个测试运行器,一个全能的工具包。它是用 Zig 语言编写的,并在底层由 JavaScriptCore 提供支持,大大减少了启动时间和内存使用。

从发布就一直热度高涨,是了2022年最火的前端项目,2023年的评选中也是第二名。

Bun 的目标很简单,就是要消除JavaScript工具链的缓慢和复杂性,但同时保留JavaScript本身的优点。Bun希望让开发者继续使用喜欢的库和框架,并且无需放弃已经熟悉的规范和约定。Bun一直追求极致的性能,在各个方面都要比Nodejs快不少。

以下是项目github 的 star 历史数据,一直保持着超高的增长速度。

为什么用 Bun?

如果犹豫要不要试一下,那不如先来看看下面这些点能不能吸引你:

  1. 速度:Bun 旨在提供高性能,无论是启动时间、执行速度还是安装依赖包的速度。进程的启动速度比Nodejs快4倍。
  2. 兼容性 Nodejs:Bun 致力于与现有的 JavaScript 生态系统兼容,包括 Node.js 的软件包。
  3. All in one:Bun 可以让你省下很多工具,因为内置了,比如npx,webpack,babel,jest等等
  4. 原生的 Web API:Bun 提供了许多浏览器中的 Web API,这使得编写服务器端代码与编写客户端代码更为相似。

使用Bun

Bun 提供了非常多的安装方式,对于Linux和MacOS用户,可以使用 curl、npm、Homebrew,docker等方式安装:

bash 复制代码
# with install script (recommended)
curl -fsSL <https://bun.sh/install> | bash

# with npm
npm install -g bun

# with Homebrew
brew tap oven-sh/bun
brew install bun

# with Docker
docker pull oven/bun
docker run --rm --init --ulimit memlock=-1:-1 oven/bun

Windows的用户要求是win10 version 1809以上(不保证稳定性),可以通过Scoop来安装:

bash 复制代码
# WARNING: No stability is guaranteed on the experimental Windows builds
scoop bucket add versions
scoop install bun-canary

安装完成后,执行 bun --version ,看到输出版本号就是安装成功了。

接下来我们可以跑一个helloworld体验一下,可以试用 bun init命令

修改一下 index.ts 的内容

javascript 复制代码
const server = Bun.serve({
  port: 3000,
  fetch(req) {
    return new Response("Bun!");
  },
});

console.log(`Listening on <http://localhost>:${server.port} ...`);

启动服务 bun index.ts ,就可以看到起的服务了

用起来上手不难,和Nodejs的使用接近。即使不把 Bun 用作运行时,Bun 内置的软件包管理器也能加快你的开发工作流程。Bun的安装速度比 npm、yarn 和 pnpm 快好几个数量级,还可以用 bun run 来替换 npm run,每次运行命令都能节省 150 毫秒的时间。

我只是抛砖引玉,更多详细的使用就等着大家自己去尝试吧。

项目信息

相关推荐
我叫张小白。7 分钟前
Vue3监视系统全解析
前端·javascript·vue.js·前端框架·vue3
WYiQIU5 小时前
11月面了7.8家前端岗,兄弟们12月我先躺为敬...
前端·vue.js·react.js·面试·前端框架·飞书
谢尔登5 小时前
简单聊聊webpack摇树的原理
运维·前端·webpack
娃哈哈哈哈呀5 小时前
formData 传参 如何传数组
前端·javascript·vue.js
zhu_zhu_xia6 小时前
vue3+vite打包出现内存溢出问题
前端·vue
tsumikistep6 小时前
【前后端】接口文档与导入
前端·后端·python·硬件架构
行走的陀螺仪7 小时前
.vscode 文件夹配置详解
前端·ide·vscode·编辑器·开发实践
2503_928411567 小时前
11.24 Vue-组件2
前端·javascript·vue.js
Bigger7 小时前
🎨 用一次就爱上的图标定制体验:CustomIcons 实战
前端·react.js·icon
谢尔登8 小时前
原来Webpack在大厂中这样进行性能优化!
前端·webpack·性能优化