Я возился с предварительным рендерингом svg с d3 на сервере, используя jsdom.Код nodejs внутри маршрута выглядит следующим образом:
app.get("/", function(req, res) {
var d3 = require('d3');
var jsdom = require('jsdom');
var data = [10, 12, 15, 12];
var domString = "<html><head></head><body><div id='container'></div></body></html>";
const { JSDOM } = jsdom;
var dom = new JSDOM(domString);
var body = d3.select(dom.window.document).select("body");
var div = d3.select(dom.window.document).select("#container");
var svg = div.append("svg")
.attr("width", 600)
.attr("height", 300)
;
var circle = svg.selectAll(".circle")
.data(data).enter()
.append("circle")
.attr("cx", (d,i)=> (i+1)*50)
.attr("cy", 20)
.attr("r", 5)
;
res.write(body.html());
res.end();
});
Приведенный выше код выполняет предварительную визуализацию 4 кружков в SVG, а затем записывает результат в ответ.circle
var - это объект выбора d3 со связанными данными - есть ли способ передать эту переменную клиенту, чтобы ее можно было использовать как таковую?Например, на клиенте используется как ...
console.log(circle.data());