2014-03-04 17 views
1

当D3像require.js一样检测到AMD时,D3会自动禁用全局命名空间污染。 Dimple.js希望d3位于全局名称空间中。 This guy说他可以用垫片加载酒窝,我可以找到similar claims for nvd3yet another incomplete example here当require.js存在时,如何成功加载dimple.js?

但是,我找不到完整的工作示例。这里有一个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 

酒窝(!我认为)适当CommonJS的库,和我能够加载D3(没有垫片)就好了。如果你想知道,是的,我有一个适当的分区,这与未定义的结果无关。

那么,如何才能在require.js的上下文中访问dimple?

+0

此外 - 我应该清楚,我试图在IPython笔记本服务器的上下文中运行此 - 所以我不能控制包含require.js(或指定data-main属性)。 –

+0

stephen-james在这里慷慨地提供了对这个问题的相当完整的回应:https://github.com/PMSI-AlignAlytics/dimple/pull/56 –

+0

嗨Dav,你最终得到了一个解决方案吗?我对你的评论并不是100%清楚,“所以我不能控制require.js的含义”......是说你根本不能在IPython笔记本上使用requirejs?我没有用IPython笔记本打过很多东西,但是这里有一些人,除了他们使用标准的matplotlib图表之外。但如果你说它可能引用外部JavaScript呈现我很乐意帮助,所以让我知道! –

回答

1

Require.js不支持shims属性。它应该是shim

+0

解决这个问题! –