Шаблон Модуля JavaScript/Dojo - как отладить?

Я работаю с 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");
          }           
      }
})(); 

5
задан djna 13 April 2010 в 07:54
поделиться

2 ответа

(Отвечаю сам, потому что кажется, что это распространенная проблема, решение которой не очень известно)

Похоже, что можно неплохо отлаживать eval-ed код в FireBug при условии, что dojo будет немного сотрудничать. Фокус в том, чтобы настроить dojo на включение такой отладки с помощью debugAtAllCosts

<script type="text/javascript" src="/dojoroot/dojo/dojo.js"
        djConfig="parseOnLoad: true, debugAtAllCosts: true"></script>

Это описано в dojo campus в разделе debugging, где также отмечается, что эта настройка не рекомендуется в производстве по причинам производительности и предлагается подход, использующий серверные условия для контроля включения такой отладки.

3
ответ дан 14 December 2019 в 13:31
поделиться

Шаблон, по сути, xhr + eval ... на самом деле проблема в eval ... В частности, Firefox не имеет возможности отслеживать код из eval обратно к исходному источнику и вместо этого указывает на сайт вызова eval плюс любое смещение строки в буфере eval. Firebug реализовал хитроумную схему для обхода этой проблемы и добавил дополнительную подсказку, которую загрузчики, такие как Dojo, могут использовать для встраивания исходного пути к файлу в комментарий. Webkit теперь поддерживает и эту схему. Это не идеально, но отладчик , и другие точки останова должны привести вас в правильный буфер.

Я не уверен, почему ничего из этого не сработает для вас. Какую версию Firebug вы используете?

1
ответ дан 14 December 2019 в 13:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: