前端工具新选择,传统方案遇瓶颈,神秘项目引热议

最近我发现了个挺有意思的工具叫snapDOM,说是能快速把网页元素转成图片或者矢量图。之前做项目时总遇到麻烦,比如用其他工具转图时样式不对、图标丢失,或者速度慢得要死。这个工具看起来解决了不少问题,但具体怎么用呢?让我简单说说。

snapDOM主要是用来把网页里的元素变成图片的,比如按钮、卡片这些。它支持转成SVG、PNG、JPG这些格式,还能直接生成画布。和其他工具比起来,它特别的地方是能处理那些隐藏的代码块,比如阴影DOM或者Web Components里的内容。以前用过html2canvas,转出来的图总是缺东少西,特别是图标和伪元素,比如::before这种,根本显示不出来。

安装方法很简单,用npm或者yarn就能装,或者直接用CDN链接。代码也不复杂,比如要转某个元素,先找到它,然后调用snapdom函数,再选导出格式就行。比如转PNG的话,写个await snapdom.toPng(el),然后把图片加到页面上。不过要注意,如果元素特别复杂,可能需要先预加载资源,不然会卡住。

这个工具说起来挺快的,官方说比其他库快好多。但也有缺点,比如外部图片要是没开跨域权限,转的时候就会失败。还有就是iframe里的内容转不了,得自己想办法。另外在某些浏览器比如Safari,用WebP格式会自动换成PNG,文件可能变大。

我试过转个带阴影和图标的按钮,第一次没成功,后来发现图标字体没加载完。这时候就得用preCache函数提前加载资源。等资源加载好了再转,效果就正常了。不过有时候导出的图片比例不对,得调整缩放参数,比如把scale设成2,这样图会更清晰。

项目是开源的,在GitHub上已经有一千多星了,说明挺多人在用。作者说这是给Zumly框架配套的,但其实其他项目也能用。文档写得还算清楚,但有些细节没说明白,比如data-capture属性的具体用法,得自己查例子。

总的来说,这个工具适合需要频繁转图做动画或者截图的场景。但如果你的页面有很多动态内容或者跨域图片,得提前处理好。安装和使用都不难,就是得注意那些限制条件。要是能解决iframe的问题,或者支持更多浏览器,应该会更好用。

原文链接:,转发请注明来源!