带有D3.js和Express.js的Web服务,以及几个同时请求

时间:2013-09-12 09:25:15

标签: javascript node.js express d3.js

我试图找到问题的答案,但我没有运气。如果已经回答,我会道歉。

我正在尝试使用Express.js编写Web服务。这是我的代码:

var express = require('express');
var app = express();

app.get('/getgraph', function(req, res) {
    var d3 = require('d3'); 

    // Creating svg stub
    var graphContainer = d3.select("body")
        .append("svg") 
        .attr("id", "graph");
 ...*rest of the code*...
}

问题在于,当我同时从两个不同的浏览器调用我的服务时,会添加两个svg容器。我想要的是每个请求都有它自己的元素。我怎样才能做到这一点?我知道JavaScript是单线程的,但我猜想d3属于不在服务器范围内的请求范围。

谢谢!

3 个答案:

答案 0 :(得分:0)

将d3移动到服务器范围内会发生什么?

答案 1 :(得分:0)

d3应该是客户端代码的javascript代码。 只应从服务器传递数据,以便客户端浏览器可以呈现数据。 this问题的答案应该让你走上正确的道路。

答案 2 :(得分:0)

在app.js文件中包含D3js,如下所示:

var d3js = require('d3');

换句话说,不要在请求处理程序中尝试使用D3js。

您可以通过npm安装d3:

npm install d3

此外,您可能希望更新package.json以将D3js包含为依赖项