конфигурация dojo 1.9 с настраиваемыми путями к пакетам

Итак, я вижу, что файл был загружен правильно из ссылки на dojoConfig, но когда я пытаюсь использовать модуль, его «неопределенные» любые предложения:

Обновлено: это загрузит файл, но когда я выбрасываю переменную в консоль, ничего не выходит. При осмотре я вижу много текста вместо массива объектов, которые я поместил внутрь.

index.html:

<script>
   dojoConfig = {
     tlmSiblingOfDojo: true,
     async: true,
     parseOnLoad: false,
     packages: [
                { name: "main", location: "/components/3.6compact/js/dojo/dojo/main"},
                { name: "jquery", location: "/scripts/libs", main: "jquery"},
                {name: "jam", location: "/scripts/mylibs", main: "lod"}
            ]
        };
    </script>
    <script src="/components/3.6compact/js/dojo/dojo/dojo.js"></script>
    <script src="/scripts/app.js"></script>

lod.js:

define([], function(){
  var lod = [{
    'level': 0,
    'resolution': 156543.033928,
    'scale': 591657527.591555
}, {
    'level': 1,
    'resolution': 78271.5169639999,
    'scale': 295828763.795777
}
 ];
 return lod;
 });

app.js:*

require(['jam'], function(jam){
  console.log(lod);
});

person atlMapper    schedule 19.09.2013    source источник


Ответы (1)


Трудно привести пример чего-то вроде jsfiddle, где мы не можем указать ресурсы по пути к файлу, но я думаю, что проблема связана с идентификатором модуля в вашем javascript. В вашем dojoConfig свойство location определяет путь к каталогу, где могут быть расположены модули в этом пакете.

Если ваш модуль lod расположен в /scripts/mylibs/lod.js, вам потребуется lod/lod:

require(['lod/lod'], function(lod) {
    console.log("lod module:", lod);
});

Вот документация по настройке dojo. Я бы посмотрел раздел "Конфигурация загрузчика".

Я все равно попробовал jsfiddle, что может быть полезно: http://jsfiddle.net/tupton/ftN6h/

Обратите внимание на ошибки в консоли:

'лод':

GET http://fiddle.jshell.net/scripts/mylibs/LOD.js 404 (Not Found)

и «лод/лод»:

GET http://fiddle.jshell.net/scripts/mylibs/lod.js 404 (Not Found)

Я не знаком с основным свойством конфигурации пакета, но похоже, что оно используется, когда вы пытаетесь запросить весь пакет. Может быть, попробовать изменить это на «lod», чтобы он искал «.../lod.js»?

person Thomas Upton    schedule 19.09.2013
comment
кажется, вы что-то делаете по какой-то причине, я не могу заставить это работать, моя конфигурация додзё загружается на мою html-страницу, а требуемая страница загружается после додзё, может ли это быть виновником. Вопрос был отредактирован, чтобы отразить - person atlMapper; 19.09.2013
comment
Вы можете добавить атрибут data-dojo-config к тегу script, который вы используете для загрузки dojo — см. параметры в моем jsfiddle выше — и в этом атрибуте вы можете указать конфигурацию вашего dojo. Если вы все еще хотите сделать это так, как указано выше, убедитесь, что dojoConfig является глобальным; то есть нет var перед ним. - person Thomas Upton; 19.09.2013
comment
Можете ли вы добавить какие-либо ошибки консоли, которые вы получаете к своему вопросу? Это, вероятно, поможет отладить проблему, с которой вы столкнулись. - person Thomas Upton; 19.09.2013
comment
новый код обновляет его, теперь он правильно загружает файл, теперь, когда я загружаю имя файла, в журнале ничего не появляется, я думаю, что могу попробовать другое имя переменной, которое используется в модуле определения/пользователя - person atlMapper; 20.09.2013
comment
require(['jam'], function(jam){ console.log(lod); }); Должно быть console.log(jam), если вы хотите регистрировать то, что вы require отредактировали. - person Thomas Upton; 20.09.2013
comment
Спасибо, Томас, исправление путей и конфигурации пакетов было важной задачей. У меня были некоторые другие части пакетов, которые взрывались, что также приводило к поломке додзё, поэтому, когда это было решено, я не готовлю на газу. Большое спасибо! - person atlMapper; 20.09.2013