Я работаю с Dojo и использую "Шаблон Модуля", как описано в Освоении Dojo. Насколько я вижу, что этот шаблон является генералом, и широко используемый, шаблон JavaScript. Мой вопрос: Как мы отлаживаем наши модули?
До сих пор я не смог убедить Firebug показать мне источник моего модуля. Firebug, кажется, показывает, что только оператор оценки додзе раньше выполнял метод фабрики. Следовательно я не могу ступить через свой источник модуля. Я попытался поместить операторы "отладчика" в свой код модуля, и Firebug, кажется, останавливается правильно, но не показывает источник.
Изобретенный пример кода ниже. Это - просто пример достаточной сложности для создания потребности в отладке вероятного, это не предназначается, чтобы быть полезным кодом.
Страница
console me
Just Testing
Сценарий Java я хотел бы отладить
dojo.provide("mytest.example");
dojo.require("dijit.layout.ContentPane");
/**
* define module
*/
(function(){
//define the main program functions...
var example= mytest.example;
example.greet= function(args) {
var bulletin = dojo.byId("bulletin");
console.log("bulletin:" + bulletin);
if ( bulletin) {
var content = new dijit.layout.ContentPane({
id: "dummy",
region: "center"
});
content.setContent('Greetings!');
dojo._destroyElement(bulletin);
dojo.place(content.domNode, dojo.body(), "first");
console.log("greeting done");
} else {
console.error("no bulletin board");
}
}
})();
(Отвечаю сам, потому что кажется, что это распространенная проблема, решение которой не очень известно)
Похоже, что можно неплохо отлаживать eval-ed код в FireBug при условии, что dojo будет немного сотрудничать. Фокус в том, чтобы настроить dojo на включение такой отладки с помощью debugAtAllCosts
<script type="text/javascript" src="/dojoroot/dojo/dojo.js"
djConfig="parseOnLoad: true, debugAtAllCosts: true"></script>
Это описано в dojo campus в разделе debugging, где также отмечается, что эта настройка не рекомендуется в производстве по причинам производительности и предлагается подход, использующий серверные условия для контроля включения такой отладки.
Шаблон, по сути, xhr + eval ... на самом деле проблема в eval ... В частности, Firefox не имеет возможности отслеживать код из eval обратно к исходному источнику и вместо этого указывает на сайт вызова eval плюс любое смещение строки в буфере eval. Firebug реализовал хитроумную схему для обхода этой проблемы и добавил дополнительную подсказку, которую загрузчики, такие как Dojo, могут использовать для встраивания исходного пути к файлу в комментарий. Webkit теперь поддерживает и эту схему. Это не идеально, но отладчик ,
и другие точки останова должны привести вас в правильный буфер.
Я не уверен, почему ничего из этого не сработает для вас. Какую версию Firebug вы используете?