← 文章 / 编程开发
Simon Willison 17小时前 · 2026-08-21 14:50:32 · 6 阅读

基于 Bun 1.4 新特性 Bun.WebView 构建 shot-scraper 风格 JSON API

研究 基于 Bun 1.4 新特性 Bun.WebView 的 shot-scraper 风格 JSON API — 一个零依赖、约 150 行的 TypeScript 服务,证明 Bun 1.4 实验性的 `Bun.WebView` 能够在不使用 Puppeteer 或 Playwright 的情况下,提供 shot-scraper 风格的 JSON API,用于执行 JavaScript 评估以及生成 PNG/JPEG/WebP 截图。它为每个请求创建一个浏览器标签页,支持并发处理,并通过 `/javascript`、`/screenshot` 和 `/healthz` 以 JSON 形式返回页面结果和错误。

今天,Bun 1.4 终于正式发布,这是自几个月前那场引人注目的 Rust 重写以来的首个稳定版本。

有意思的是,Rust 重写在发布说明中被一笔带过,后者罗列了一长串新特性,并宣称修复了多达 2,900 个 bug:

Bun 1.4 从 Node.js 测试套件中引入了 +1,517 个测试——这是自 Bun 1.0 以来 Node.js 兼容性方面最大的一次跃升。Bun v1.4 还修复了超过 2,900 个问题。它将空闲 CPU 使用率降低了 5 倍,内存占用最高减少 35%,在 Linux 上的启动速度提升了 50%。它新增了 Bun.ImageBun.WebViewBun.markdownBun.cron()Bun.Terminalbun run --parallelbun test --parallelbun audit fixbun dedupebun prune。同时,Bun 也从 Zig 重写为 Rust。

其中最吸引我注意的是 Bun.WebView,它通过 macOS WebKit 或 Chrome DevTools Protocol (CDP) 控制本地 Chromium 进程,为 Bun 内核添加了一流的浏览器自动化支持。

我让 Claude Code for web 构建了一个 Web API 的原型,用来加载网页并对其执行 JavaScript,这个灵感来自我的 shot-scraper javascript 命令行工具——部分原因是想看看这类服务需要多少内存。

这是 该 TypeScript 服务端的实现,看起来运行完整的 Chrome 来处理复杂页面需要 192MB 到 256MB 的容器——这是通过 cgroups 测试得出的。

原始来源: Simon Willison

评论 (0)