Есть ли способ передать объект выбора d3 со связанными данными с сервера (узла) клиенту? - PullRequest
0 голосов
/ 13 февраля 2019

Я возился с предварительным рендерингом 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());
...