Estoy trabajando con Dojo y utilizando el "Patrón de módulo" como se describe en Mastering Dojo. Hasta donde puedo ver, este patrón es un patrón de JavaScript general y ampliamente utilizado. Mi pregunta es: ¿cómo depuramos nuestros módulos?JavaScript/Dojo Module Pattern: ¿cómo depurar?
Hasta ahora no he podido convencer a Firebug para que me muestre el origen de mi módulo. Firebug parece mostrar solo la declaración de evaluación dojo utilizada para ejecutar el método de fábrica. Por lo tanto, no puedo pasar por mi fuente del módulo. Intenté colocar declaraciones de "depurador" en el código de mi módulo, y Firebug parece detenerse correctamente, pero no muestra la fuente.
código de ejemplo a continuación. Este es solo un ejemplo de la complejidad suficiente para hacer plausible la necesidad de depurar, no pretende ser un código útil.
La página
<!--
Experiments with Debugging
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>console me</title>
<style type="text/css">
@import "../dojoroot/dojo/resources/dojo.css";
@import "../dojoroot/dijit/themes/tundra/tundra.css";
@import "edf.css";
</style>
<script type="text/javascript" src="../dojoroot/dojo/dojo.js">
</script>
<script type="text/javascript" >
dojo.registerModulePath("mytest", "../../mytest");
dojo.require("mytest.example");
dojo.addOnLoad(function(){
mytest.example.greet();
});
</script>
</head>
<body class="tundra">
<div id="bulletin">
<p>Just Testing</p>
</div>
</body>
</html>
<!-- END: snip1 -->
La java script que me gustaría depurar
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");
}
}
})();
debugAtAllCosts generalmente ya no es necesario en FF y WebKit, por las razones mencionadas en mi respuesta – peller
Todo lo que puedo decir es que sin los djconfigs que se muestran aquí el depurador muestra la línea "eval" en lugar del código eval-ed, y el paso es Inútil. Con el djconfig muestro que la fuente completa es visible y puedo pasarla bien. – djna
En Chrome descubrí que podía depurar el origen de mis módulos, pero no en Firebug (1.8), así que esta respuesta me ahorró mucho tiempo, gracias. – mydoghasworms