Как я могу успешно загрузить dimple.js, когда присутствует require.js?

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?


person Dav Clark    schedule 04.03.2014    source источник
comment
Кроме того, мне должно быть ясно, что я пытаюсь запустить это в контексте сервера ноутбуков IPython, поэтому я не могу контролировать включение require.js (или указать атрибут data-main).   -  person Dav Clark    schedule 05.03.2014
comment
Стивен-Джеймс щедро предоставил довольно полный ответ на эту проблему здесь: github.com/PMSI- AlignAlytics/dimple/pull/56   -  person Dav Clark    schedule 07.03.2014
comment
Привет, Дав, ты нашел решение в конце? Я не на 100% ясен из вашего комментария, поэтому я не могу контролировать включение require.js... говорят, что вы вообще не можете использовать requirejs с ноутбуком IPython? Я мало играл с блокнотом IPython, но некоторые ребята здесь играли, за исключением того, что они используют стандартные диаграммы matplotlib. Но если вы говорите, что можно ссылаться на внешний javascript для рендеринга, я буду рад помочь, так что дайте мне знать!   -  person Stephen James    schedule 07.03.2014
comment
На данный момент я только что использовал обходные пути (работая вне ноутбука IPython). Вы можете использовать require.js с модулями, поддерживающими AMD, поэтому я думаю, что я не настолько заинтересован в решении проблемы, учитывая, что запрос на вытягивание решит ее за нас. ср. nbviewer.ipython.org/ github/rdhyee/working-open-data-2014/blob/ @rdhyee и я работаем над графикой с помощью JS в блокноте... тем не менее, я отчитаюсь, если у меня заработает ямочка до того, как вы обновите это для поддержки AMD (кажется общая проблема).   -  person Dav Clark    schedule 07.03.2014


Ответы (1)


Require.js не поддерживает атрибут shims. должно быть shim.

person Artyom Trityak    schedule 05.03.2014