Bun入门指南

什么是Bun?

Preview
  • 为什么要学习Bun
  • 速度
  • 支持TypeScript和JSX
  • 兼容ESM 和 CommonJS
  • Web 标准 API
  • 热重载
  • Node.js 兼容性
  • Bun vs Node.js 套件管理

为什么要学习Bun

我们可以从以下几个方面分析,为什么要学习Bun。

速度

Bun 的处理速度比当前的 Node.js 快 4 倍。那为什么Bun的速度会这么快呢? 因为和 Node.js、Deno 不同,Bun 并没有使用 V8 引擎,而是直接选择了 JavaScriptCore 引擎。

JavaScriptCore 引擎优先考虑如何拥有更快的启动时间并减少记忆体使用。V8 引擎优先考虑快速执行,并进行更多运行时优化,这可能会导致更多记忆体使用。

另外,Bun 是用一种具有手动内存管理的低级编程语言 ZIG 编写的,ZIG 是一种静态类型、编译型的语言,专注于性能。它提供了低级别的控制,允许我们直接操作内存,从而可以优化代码实现最大的性能。

支持TypeScript和JSX

和传统的 Node.js 这种传统的运行时不同,Bun 直接内置了压缩器、转译器、任务运行器和 npm 客户端,言下之意就是我们不再需要 webpack、rollup、babel 、ts-node等,就可以直接使用 JSX 跟 TypeScript了。

兼容ESM 和 CommonJS

Bun 推荐使用 ES 模块,但同时支持 CommonJS。

Web 标准 API

Bun 实现了标准的 Web API,如 fetch、WebSocket 和 ReadableStream。Bun 由由苹果为 Safari 开发的 JavaScriptCore 引擎驱动,因此一些 API,如 Headers 和 URL,直接使用 Safari 的实现。

热重载

学过 Node.js的都知道要是使用热重载,有两种方法:

  • 使用 nodemon
  • 使用 — watch,不过这种写法治支持 Node.js 18 以上。

Bun却提供了一个很简单的热重载方法:--hot写法

bun --hot index.ts 

Node.js 兼容性

Bun 被设计为 Node.js 的直接替代品,因此它与所有 Node.js API 兼容。

它还具有所有内置的 Node.js 模块,例如 crypto、fs、path 等。您可以在 Bun.js 文档上检查可用和不可用的 Node.js 模块。

此外,Bun 是一个与 npm 兼容的包管理器。这意味着您可以使用 Bun 来安装和管理 Node.js 包。

Bun vs Node.js 套件管理

基本上 Bun 的写法跟 yarn 是一样的。

image.png