D3 автоматически отключает загрязнение глобального пространства имен, когда обнаруживает AMD, например require.js. Dimple.js ожидает, что d3 будет находиться в глобальном пространстве имен. Этот парень говорит, что может загрузить ямочку с помощью прокладки, и я могу найти аналогичные претензии для nvd3 и еще один неполный пример здесь.
Однако я не могу найти полных рабочих примеров. Вот нерабочий пример 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, и это не будет иметь отношения к результату undefined.
Итак, как я могу получить доступ к ямочке в контексте require.js?