长页面中比完整页面 toCanvas 更快
替换 html2canvas。
使用 SnapDOM。
SnapDOM 只捕捉一次 DOM 子树并返回可复用结果。可导出为 PNG、JPG、WebP、SVG、Canvas 或 Blob,也可以通过插件添加自定义格式。

认识 Mr. SnapDOM
官方吉祥物,更快、更清晰的 DOM 捕捉守护者。
为什么要替换 html2canvas?
传统工具的目标是生成截图;SnapDOM 创建可移植的 DOM 表示,无需再次克隆即可导出多种格式。
在同一 DOM 上测量
SnapDOM 当前版本相对各竞争库在 Chromium 基准测试中的加速倍数,越高越好。结果来自项目公开的 Vitest 基准测试。
简单节点
复杂节点
scale 2 的栅格 PNG 比 html2canvas 更快
背景图片画廊中更快
git clone https://github.com/zumerlab/snapdom.git
cd snapdom
npm install
npm run test:benchmark三分钟完成迁移
保留界面,升级捕捉引擎。
安装
添加 @zumer/snapdom 包。
替换调用
将同一个目标元素传给 snapdom.toPng()。
复用 DOM
只捕捉一次,无需重复克隆即可多次导出。
比较替代方案
这些库解决类似任务,但架构、维护历史和扩展方式并不相同。
html2canvas
Canvas 重绘器流行且熟悉,但它会解释页面,并把支持的 CSS 重新绘制到 Canvas。
html-to-image
维护中的分支dom-to-image 的可维护分支,提供便利的输出方法,仍沿用 SVG foreignObject 技术路线。
dom-to-image
影响深远的先驱启发了许多后继项目,简单且重要,但其架构已显露年代感。
dom-to-image-more
修补增强版增加了重要修复和 iframe 支持,同时保留原有架构与 API 形态。
对于新的客户端 DOM 捕捉项目,SnapDOM 提供了超越固定图像导出 API 的更完整扩展路径。
可编程的捕捉引擎
插件可以介入处理流程、转换捕捉结果,甚至添加全新的导出格式。
控制输入内容
在导出前过滤节点、替换内容并准备 DOM。
+改变结果
无需修改核心即可组合滤镜、叠加层和后处理。
+创造新格式
不止图像:社区示例包括 ASCII、PDF 和面向提示词的导出。
+构建工作流
全局或按次注册插件,并可自由组合。
+日常使用示例
大多数产品中反复使用的几种模式。
import { snapdom } from 'snapdom'
const card = document.querySelector('#card')
const image = await snapdom.toPng(card)
await image.download({ filename: 'card.png' })浏览器已经完成了最难的工作。
布局已经渲染,字体已经加载,样式已经解析。SnapDOM 将这些成果保存在可移植的表示中,而不是再次解释整套页面。
迁移前的常见问题
01SnapDOM 只是截图工具吗?+
不是。它是 DOM 捕捉引擎:snapdom() 创建可复用的表示,可以反复转换和导出。
02可以创建自定义格式吗?+
可以。插件系统允许添加导出器并接入捕捉处理流程。
03还能获得 Canvas 吗?+
可以。使用 snapdom.toCanvas(element),或选择 PNG、JPG、WebP、SVG 与 Blob。
04跨域图片怎么办?+
浏览器安全规则仍然适用。SnapDOM 提供 useProxy 选项来处理被 CORS 拒绝的资源。
先迁移一处捕捉流程。
在支持的浏览器中比较输出,然后删除旧依赖。