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 毫秒的时间。

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

项目信息

相关推荐
MarcoPage几秒前
第十九课 Vue组件中的方法
前端·javascript·vue.js
.net开发2 分钟前
WPF怎么通过RestSharp向后端发请求
前端·c#·.net·wpf
**之火24 分钟前
Web Components 是什么
前端·web components
顾菁寒24 分钟前
WEB第二次作业
前端·css·html
前端宝哥25 分钟前
10 个超赞的开发者工具,助你轻松提升效率
前端·程序员
你好龙卷风!!!27 分钟前
vue3 怎么判断数据列是否包某一列名
前端·javascript·vue.js
兔老大的胡萝卜1 小时前
threejs 数字孪生,制作3d炫酷网页
前端·3d
齐 飞2 小时前
MongoDB笔记02-MongoDB基本常用命令
前端·数据库·笔记·后端·mongodb
巧克力小猫猿2 小时前
基于ant组件库挑选框组件-封装滚动刷新的分页挑选框
前端·javascript·vue.js
FinGet3 小时前
那总结下来,react就是落后了
前端·react.js