Snap.svg可以用在Node.js的服务器端吗? (不通过浏览器)

我需要使用一些服务器端代码(如使用cron作业)来创build和操作某些SVG,但是我想知道是否可以在这种情况下使用Snap.svg,而不包含在网页中。

这是否会在没有Snap.svg的情况下在浏览器中运行?

您可以使用jsdom模拟浏览器环境,并在Node.js中本地运行Snap.svg。

例:

const jsdom = require('jsdom'); const xmlserializer = require('xmlserializer'); jsdom.env('', [require.resolve('snapsvg')], (error, window) => { if (error) throw error; const paper = window.Snap(100, 100); const rect = paper.rect(20, 20, 60, 60); rect.attr({fill: 'red'}); const svg = xmlserializer.serializeToString(paper.node); window.close(); console.log(svg); }); 

打印:

 <svg height="100" version="1.1" width="100" xmlns="http://www.w3.org/2000/svg"><desc>Created with Snap</desc><defs/><rect x="20" y="20" width="60" height="60" style="" fill="#ff0000"/></svg>