7

我需要使用一些服务器端代码(例如使用 cron 作业)创建和操作一些 SVG,但我想知道是否可以在这种不包含在网页中的场景中使用 Snap.svg。

如果没有 Snap.svg 在浏览器中运行,这会起作用吗?

4

1 回答 1

6

您可以使用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>
于 2016-09-19T05:42:34.153 回答