本页面文档介绍了 Bun 对标准 Web API 的实现及其对 Web 标准规范的兼容性。这些 API 遵循 W3C、WHATWG 和 TC39 标准,可在服务器端 JavaScript 运行时中运行,同时与浏览器环境兼容。
有关 Bun 特有 API,请参阅 Bun Namespace API。有关 Node.js 兼容性 API,请参阅 Node.js 兼容性。
Bun 实现了一套全面的 Web API,以确保与现代 JavaScript 应用程序的兼容性。实现策略侧重于提供与浏览器兼容的 API,同时利用原生性能优化。
来源: packages/bun-types/globals.d.ts1-900 src/bun.js/bindings/BunObject.cpp1-100
Bun 提供了一套全面的全局对象,这些对象符合 Web 标准。这些全局对象无需导入即可使用,为 Web 兼容的 JavaScript 执行提供了基础。
| 类别 | API | 标准兼容性 |
|---|---|---|
| 事件 | Event、EventTarget、CustomEvent | DOM Level 2 Events |
| 流 | ReadableStream、WritableStream、TransformStream | WHATWG Streams |
| 文本 | TextEncoder、TextDecoder | WHATWG Encoding |
| 工作进程 | Worker、MessageEvent | HTML5 Web Workers |
| 网络 | WebSocket、EventSource | WebSocket API, Server-Sent Events |
| Crypto | crypto、SubtleCrypto | Web Crypto API |
| 文件 | Blob、File、FormData | File API |
来源: packages/bun-types/globals.d.ts33-297 packages/bun-types/globals.d.ts434-534
Bun 实现 WHATWG Streams 规范,提供 ReadableStream、WritableStream 和 TransformStream,具有完全的兼容性,包括回压处理和流转换。
ReadableStreamDirectController 以实现高性能流来源: packages/bun-types/globals.d.ts636-820 packages/bun-types/bun.d.ts306-334
Bun 通过全局 TextEncoder 和 TextDecoder 实现 WHATWG Encoding 标准,对 UTF-8 和 UTF-16 文本处理进行了性能优化。
TextEncoder 实例都使用 UTF-8 编码TextDecoder 支持 UTF-8、UTF-16 和 windows-1252来源: packages/bun-types/globals.d.ts152-200 src/bun.js/bindings/helpers.h56-184
Bun 实现 DOM Events 规范,提供了一个与浏览器环境兼容的完整事件系统,并支持捕获和冒泡阶段。
| 功能 | 实现 | 兼容性 |
|---|---|---|
| 事件阶段 | 捕获、目标、冒泡 | DOM Level 2 |
| 事件监听器 | 函数和对象形式 | DOM Level 2 |
| 自定义事件 | 带有自定义数据的通用事件 | DOM Level 3 |
| 事件选项 | once、passive、signal | DOM Level 3 |
| 事件取消 | preventDefault()、stopPropagation() | DOM Level 2 |
来源: packages/bun-types/globals.d.ts202-274 packages/bun-types/bun.d.ts124-196
Bun 实现 Web Workers,并为服务器端用例进行了扩展,提供具有消息传递能力的独立 JavaScript 执行上下文。
smol 选项用于减少内存使用Bun.argv 中的参数ref()/unref() 用于事件循环控制来源: packages/bun-types/bun.d.ts374-503 packages/bun-types/globals.d.ts52-65
Bun 提供 WebSocket 客户端实现,遵循 WebSocket API 规范,并为服务器端用例提供了额外的连接选项。
ref()/unref()来源: packages/bun-types/globals.d.ts67-131 packages/bun-types/bun.d.ts160-265
Bun 实现 Web Crypto API 规范,通过全局 crypto 对象和 SubtleCrypto 接口提供加密操作。
来源: packages/bun-types/globals.d.ts133-151 packages/bun-types/bun.d.ts10-16
Bun 实现标准定时器 API,并为服务器端应用程序进行了扩展,提供了精确的计时控制和事件循环管理。
ref()/unref()queueMicrotask() 进行标准微任务调度来源: packages/bun-types/globals.d.ts392-433 packages/bun-types/globals.d.ts385-391
Bun 对 Web 标准的合规性策略侧重于最大化兼容性,同时针对服务器端 JavaScript 环境进行性能优化。
| 标准 | 实现方法 | 测试策略 |
|---|---|---|
| WHATWG Streams | 原生 Zig 实现,集成 WebCore | Web 平台测试 + 性能基准测试 |
| DOM 事件 | WebCore EventTarget,带 JavaScript 绑定 | DOM 事件测试套件 |
| Web 加密 | BoringSSL 后端,带 Web Crypto API 接口 | Web Crypto API 合规性测试 |
| Web Workers | 自定义实现,带 Node.js worker_threads 桥接 | Worker API 测试 + Bun 特有测试 |
| WebSocket | 原生实现,标准的 API 表面 | WebSocket 协议合规性测试 |
来源: packages/bun-types/bun.d.ts49-70 src/bun.js/bindings/BunObject.cpp75-100