gpt4 book ai didi

JavaScript/Dojo 模块模式 - 如何调试?

转载 作者:数据小太阳 更新时间:2023-10-29 06:13:48 25 4
gpt4 key购买 nike

我正在使用 Dojo 并使用 Mastering Dojo 中描述的“模块模式” .据我所知,此模式是一种通用且广泛使用的 JavaScript 模式。我的问题是:我们如何调试我们的模块?

到目前为止,我无法说服 Firebug 向我展示模块的源代码。 Firebug 似乎只显示用于执行工厂方法的 dojo eval 语句。因此我无法单步执行我的模块源代码。我试过在我的模块代码中加入“调试器”语句,Firebug 似乎正确停止,但不显示源代码。

下面是人为设计的示例代码。这只是一个足够复杂的例子,足以使调试的需要变得合理,它并不是有用的代码。

页面

<!--
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 -->

我要调试的 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");
}
}
})();

最佳答案

(我自己回答这个问题,因为这似乎是一个常见问题,但解决方案并不为人所知。)

如果 dojo 做一点合作,似乎可以很好地调试 FireBug 中的 eval-ed 代码。诀窍是使用 debugAtAllCosts

配置 dojo 以启用此类调试
<script type="text/javascript" src="/dojoroot/dojo/dojo.js"
djConfig="parseOnLoad: true, debugAtAllCosts: true"></script>

这在debugging下的道场校园中有描述。 ,其中还指出,出于性能原因,不建议在生产中使用此设置,并建议使用服务器端条件来控制是否启用此类调试的方法。

关于JavaScript/Dojo 模块模式 - 如何调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2627844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com