当D3检测到AMD(例如require.js)时,它会自动禁用全局名称空间污染。 Dimple.js期望d3位于全局名称空间中。 This guy说他可以使用垫片加载酒窝,我可以找到similar claims for nvd3和yet another incomplete example here。
但是,我找不到完整的工作示例。这是require.config
的无效示例:
require.config({
shim: {
d3: { exports: "d3" },
dimple: {
exports: "dimple",
deps: ["d3"]
}
},
paths: {
d3: "http://d3js.org/d3.v3.min",
dimple: "http://dimplejs.org/dist/dimple.v1.1.5.min"
}
});
还有一些不起作用的例子:
require(["dimple"], function(dimple) {
var svg = dimple.newSvg("#awesome_bars", 800, 600);
}
// -> dimple is undefined
Dimple是(我认为!)一个适当的CommonJS库,并且我能够很好地加载d3(没有填充)。而且,如果您想知道,是的,我有一个适当的div,它与未定义的结果无关。
那么,如何在require.js上下文中访问dimple?
最佳答案
Require.js不支持shims
属性。它应该是shim
。