2014-03-04 45 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

解決這個問題! –