Bun.js 教程:快速启动你的 JavaScript 项目 – wiki词典


Bun.js 教程:快速启动你的 JavaScript 项目

在现代 Web 开发中,速度和效率是至关重要的。传统的 JavaScript 工具链,如 Node.js、npm/yarn、Webpack、Babel 等,虽然功能强大,但往往伴随着复杂的配置和较长的启动时间。这时,一个名为 Bun.js 的新星横空出世,旨在颠覆现状,为 JavaScript 开发带来前所未有的速度体验。

本文将详细介绍 Bun.js 是什么,它为何如此受欢迎,以及如何使用它来快速启动你的 JavaScript 项目。

什么是 Bun.js?

Bun.js 是一个全新的 JavaScript 运行时、打包器、转译器、任务运行器和包管理器,所有这些都内置在一个工具中。它使用 Zig 语言编写,并由 WebKit 的 JavaScriptCore 引擎驱动,而不是 Node.js 使用的 V8 引擎。这使得 Bun 在许多方面都比 Node.js 更快,尤其是在启动时间、模块加载和包管理操作上。

Bun 的目标是提供一个一体化的工具链,简化开发流程,减少配置的复杂性,并显著提高开发效率。

为什么选择 Bun?它的优势在哪里?

选择 Bun 而不是传统的工具链,主要有以下几个原因:

  1. 极速性能:

    • 快速启动: Bun 应用程序的启动速度比 Node.js 快数倍。
    • 快速包安装: bun install 的速度远超 npm installyarn install。这得益于其高度优化的 C++ 和 Zig 实现,以及对 node_modules 结构的原生支持。
    • 快速测试: 内置的测试运行器 bun test 速度惊人,提供 JSDom 和 Jest 兼容性。
    • 快速打包: 内置的打包器(类似 Webpack/Rollup)性能优异,无需额外配置。
  2. 一体化工具链:

    • JavaScript/TypeScript 运行时: 可以直接运行 .js, .ts, .jsx, .tsx 文件,无需 Babel 或 swc 进行预转译。
    • 包管理器: bun installbun addbun remove,功能与 npm/yarn 类似,但速度更快。
    • 打包器: 内置了快速的 JavaScript 和 TypeScript 打包器。
    • 测试运行器: 提供了开箱即用的测试功能。
    • 文件系统 API: 内置了一些便捷的文件系统操作,例如 Bun.file() 用于读取文件。
    • WebSocket & HTTP 服务器: 提供了高性能的 HTTP 和 WebSocket 服务器 API,可以直接使用 Bun.serve()
  3. 开发体验优化:

    • ESM & CommonJS 兼容: 同时支持 ESM 和 CommonJS 模块。
    • 自动加载环境变量: 自动从 .env 文件中加载环境变量。
    • TypeScript 支持: 原生支持 TypeScript,无需额外配置。
    • JSX/TSX 支持: 可以直接运行 JSX/TSX 文件。

如何安装 Bun?

Bun 支持 macOS、Linux 和 WSL。Windows 用户可以通过 WSL 或 Docker 使用 Bun。

通用安装(推荐,适用于 macOS/Linux/WSL):
打开终端并运行以下命令:

bash
curl -fsSL https://bun.sh/install | bash

这将把 Bun 安装到你的 PATH 中。安装完成后,你可以通过运行 bun --version 来验证安装是否成功。

macOS Homebrew 安装:

bash
brew install oven-sh/bun/bun

Windows (WSL):
在 Windows Subsystem for Linux (WSL) 环境中,按照通用安装方式进行。

快速启动你的 JavaScript 项目

现在,让我们通过几个简单的步骤,使用 Bun 快速启动一个 JavaScript 项目。

1. 初始化新项目

首先,创建一个新的项目文件夹并进入该文件夹:

bash
mkdir my-bun-app
cd my-bun-app

然后,使用 bun init 命令初始化项目。它会引导你创建一个 package.json 文件。

bash
bun init

按照提示操作,或者一路回车使用默认值。这会创建一个基本的 package.json 文件和一些示例文件(如 index.tsindex.js)。

2. 编写你的第一个 Bun 应用

假设 bun init 为你创建了一个 index.ts 文件。让我们在其中添加一些简单的 TypeScript 代码:

index.ts:

“`typescript
// 导入一个包,例如 express
// 我们稍后会安装它
// import express from ‘express’;

console.log(“Hello from Bun!”);

const add = (a: number, b: number): number => {
return a + b;
};

console.log(2 + 3 = ${add(2, 3)});

// 使用 Bun 的内置 HTTP 服务器
Bun.serve({
port: 3000,
fetch(request: Request): Response | Promise {
const url = new URL(request.url);
if (url.pathname === “/”) {
return new Response(“Welcome to Bun! Visit /hello”);
}
if (url.pathname === “/hello”) {
return new Response(“Hello, Bun developer!”);
}
return new Response(“404 Not Found”, { status: 404 });
},
});

console.log(“Bun server listening on http://localhost:3000”);
“`

3. 运行你的应用

要运行 index.ts 文件,只需使用 bun runbun 命令:

“`bash
bun run index.ts

或者更简洁地

bun index.ts
“`

你将看到控制台输出 “Hello from Bun!” 和加法结果,并且服务器开始监听 3000 端口。在浏览器中访问 http://localhost:3000http://localhost:3000/hello,你可以看到相应的响应。

4. 安装和管理依赖

Bun 的包管理器是其最亮眼的特性之一。它与 npm/yarn 兼容,但速度更快。

安装依赖:
假设你想安装 express@types/express

bash
bun add express @types/express

你会发现依赖安装速度飞快。bun add 也会自动更新 package.jsonbun.lockb(Bun 的锁定文件,类似于 package-lock.jsonyarn.lock)。

安装所有依赖(从 package.json):

bash
bun install

移除依赖:

bash
bun remove express

5. 运行脚本

package.json 中定义脚本后,你可以像使用 npm 或 yarn 一样运行它们。

package.json:

json
{
"name": "my-bun-app",
"version": "1.0.0",
"scripts": {
"start": "bun run index.ts",
"dev": "bun --watch index.ts",
"test": "bun test"
},
"dependencies": {
// ...
},
"devDependencies": {
// ...
}
}

现在,你可以运行 start 脚本:

“`bash
bun run start

或者

bun start
“`

如果你定义了 dev 脚本并使用 --watch 标志,Bun 会在文件更改时自动重启应用,提供类似 nodemon 的开发体验:

bash
bun dev

6. 编写和运行测试

Bun 内置了开箱即用的测试运行器,兼容 Jest API。

创建一个测试文件,例如 index.test.ts

index.test.ts:

“`typescript
import { expect, test } from “bun:test”;

const add = (a: number, b: number): number => {
return a + b;
};

test(“add function should correctly add two numbers”, () => {
expect(add(1, 2)).toBe(3);
expect(add(0, 0)).toBe(0);
expect(add(-1, 1)).toBe(0);
expect(add(10, -5)).toBe(5);
});
“`

然后运行测试:

bash
bun test

Bun 会快速执行测试并显示结果。

7. 打包你的应用 (Bundling)

Bun 也可以作为一个 JavaScript 打包器使用,它支持 CommonJS 和 ES Modules,并且内置了对 TypeScript 和 JSX 的支持。

例如,你可以将 index.ts 打包成一个单独的 out.js 文件:

bash
bun build index.ts --out-dir ./dist --target node --sourcemap

  • --out-dir ./dist:指定输出目录。
  • --target node:指定目标环境为 Node.js (也可以是 browserbun)。
  • --sourcemap:生成 Source Map。

总结

Bun.js 是一款革命性的 JavaScript 工具,它将运行时、包管理器、打包器和测试运行器集成到一个闪电般快速的工具中。无论你是要开始一个新的项目,还是希望优化现有项目的开发体验和性能,Bun 都值得你尝试。

它的出现极大地简化了 JavaScript 开发的复杂性,并为开发者带来了前所未有的速度和效率。现在就开始探索 Bun,体验未来前端/后端开发的极致快感吧!


滚动至顶部