Ich arbeite mit Dojo und mit dem "Module Pattern" wie in Mastering Dojo beschrieben. Soweit ich sehen kann, ist dieses Muster ein allgemeines und weit verbreitetes JavaScript-Muster. Meine Frage ist: Wie debuggen wir unsere Module?JavaScript/Dojo Modul Pattern - wie zu debuggen?
Bisher konnte ich Firebug nicht überzeugen, mir die Quelle meines Moduls zu zeigen. Firebug scheint nur die Dojo-Eval-Anweisung anzuzeigen, die zur Ausführung der Factory-Methode verwendet wird. Daher kann ich meine Modulquelle nicht durchgehen. Ich habe versucht, "Debugger" -Anweisungen in meinen Modulcode zu setzen, und Firebug scheint korrekt anzuhalten, zeigt aber nicht die Quelle an.
Contrived Beispielcode unten. Dies ist nur ein Beispiel ausreichender Komplexität, um die Notwendigkeit des Debugging plausibel zu machen, es ist nicht als nützlicher Code gedacht.
Die Seite
<!--
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 -->
Das Java-Skript Ich mag würde
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 sollte auf FF und WebKit aus Gründen, die in meiner Antwort – peller
erwähnt werden, im Allgemeinen nicht mehr notwendig sein Alles was ich sagen kann ist, dass ohne die hier gezeigten djconfigs der Debugger die "Eval" -Zeile und nicht den Evaluierungscode anzeigt Nicht nützlich. Mit der djconfig zeige ich die volle Quelle ist sichtbar und ich kann es schön durchgehen. – djna
In Chrome habe ich festgestellt, dass ich die Quelle meiner Module debuggen konnte, aber nicht in Firebug (1.8), deshalb war diese Antwort eine ziemliche Zeitersparnis, danke. – mydoghasworms