如何集成Requirejs,d3和d3.slider模块

时间:2016-06-06 17:39:43

标签: javascript d3.js requirejs

这篇文章是关于NodeJS的前一个question,需要一个注入函数的模块。但是,之前的问题是在Webpack的上下文中。我也试图集成d3.js和d3.slider模块,但是使用RequireJS。

根据Nikos Paraskevopoulos留下的评论,需要一个垫片。我没有成功实现d3.slider模块所需的垫片,并希望有人能引导我朝着正确的方向前进。现在我有

require.config({
    paths: {
        "d3": "https://d3js.org/d3.v3.min",
        "d3.slider": "lib/d3.slider"
    },
    shim: {
        "d3.slider": {
            "deps": ["d3"],
            "exports": "d3"
        }
    }
});
require(['d3'], function(d3) {
    console.log(d3.version);
    d3.select("#time_slider").call(d3.slider());
});

此日志:

3.5.17

TypeError:d3.slider不是函数

我认为我的问题是在垫片中,但我不太确定。任何方向都表示赞赏。

1 个答案:

答案 0 :(得分:0)

当我查看d3.slider的源代码时,我看到它调用了define。所以你不需要shim

另外,您没有加载它。你应该这样做:

require(['d3', 'd3.slider'], function (d3) {
    console.log(d3.version);
    d3.select("#time_slider").call(d3.slider());
});

在源代码中,我看到它会自行安装在d3上。因此,您无需向匿名函数添加参数:一旦加载,它将在d3对象上可用。