當D3像require.js一樣檢測到AMD時,D3會自動禁用全局命名空間污染。 Dimple.js希望d3位於全局名稱空間中。 This guy說他可以用墊片加載酒窩,我可以找到similar claims for nvd3和yet 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?
此外 - 我應該清楚,我試圖在IPython筆記本服務器的上下文中運行此 - 所以我不能控制包含require.js(或指定data-main屬性)。 –
stephen-james在這裏慷慨地提供了對這個問題的相當完整的迴應:https://github.com/PMSI-AlignAlytics/dimple/pull/56 –
嗨Dav,你最終得到了一個解決方案嗎?我對你的評論並不是100%清楚,「所以我不能控制require.js的含義」......是說你根本不能在IPython筆記本上使用requirejs?我沒有用IPython筆記本打過很多東西,但是這裏有一些人,除了他們使用標準的matplotlib圖表之外。但如果你說它可能引用外部JavaScript呈現我很樂意幫助,所以讓我知道! –