探索用于 Rust 的新 Servo crate
Simon Willison··作者 Simon Willison
关键信息
`servo-shot` 工具能成功渲染网页并准确截取屏幕图像,但 Servo 本身因依赖 SpiderMonkey 和多线程机制无法编译为 WebAssembly;不过,如 `html5ever` 这样的相关库可以在 WASM 环境中使用。
资讯摘要
Simon Willison 探索了新发布的 `servo` crate,该 crate 将 Servo 浏览器引擎封装成可嵌入的 Rust 库。他借助 AI 辅助(Claude Code)构建了一个名为 `servo-shot` 的命令行工具,能够从任意网址截取屏幕快照——以 Hacker News 页面为例进行了演示。
虽然 Servo 核心因多线程和外部依赖(如 SpiderMonkey)无法编译为 WebAssembly,但他成功用 `html5ever` 和 `markup5ever_rcdom` 库创建了一个 WebAssembly 演示页面,用于将 HTML 片段解析为 DOM 树。这展示了嵌入 Servo 在现代 Rust 项目中的潜力与当前限制。

资讯正文
研究:探索新的 `servo` crate
在 <a href="https://servo.org/blog/2026/04/13/servo-0.1.0-release/">Servo 已经发布到 crates.io</a> 的公告中,Servo 团队宣布了 <a href="https://crates.io/crates/servo">servo</a> crate 的首个版本,该 crate 将他们的浏览器引擎打包为一个可嵌入的库。
我让 Claude Code for web 执行一项任务,弄清楚它能做什么,构建一个使用它的命令行工具来截取网页截图,并验证是否可以将其编译成 WebAssembly。
它生成的 `servo-shot` Rust 工具运行得相当不错:
```
git clone https://github.com/simonw/research
cd research/servo-crate-exploration/servo-shot
cargo build
./target/debug/servo-shot https://news.ycombinator.com/
```
结果如下:
<img alt="Hacker News 主页的准确截图" src="https://static.simonwillison.net/static/2026/servo-hn.png" />
将 Servo 本身编译为 WebAssembly 是不可行的,因为它大量使用线程以及像 SpiderMonkey 这样的依赖项。但 Claude 为我构建了一个 <a href="https://simonw.github.io/research/servo-crate-exploration/html5ever-wasm-demo/www/">演示页面</a>,用于尝试 `html5ever` 和 `markup5ever_rcdom` crate 的 WebAssembly 版本,提供了一个将 HTML 片段转换为解析树的工具。
来源与参考
收录于 2026-04-14