在我工作的地方,我们所有的JavaScript都是在为生产版本部署之前通过编译器运行的。这个JavaScript编译器所做的事情之一(除了像minify这样的事情之外)是寻找像这样的代码行,并将它们从我们的JavaScript的发行版本中删除:
//#debug
alert("this line of code will not make it into the release build")
//#/debug
我没有多看,但我还没有看到这个//#debug指令在我们的任何JavaScript中使用。
它可能有用吗?我不明白为什么这可能是一个好主意,并认为#debug指令(无论是用C#还是JavaScript这样的语言)通常都是糟糕编程的标志。
这是否浪费时间添加//#debug的功能或什么?
答案 0 :(得分:1)
如果你使用像YUI那样有大量记录器的大型JavaScript库,它只能在调试模式下记录调试消息,以提高性能。
答案 1 :(得分:0)
由于它是专有解决方案,我们只能猜测原因。许多浏览器提供console
对象来记录各种类型的消息,例如debug
,error
等。
您可以在生产模式下始终禁用自定义console
对象。但是,日志语句仍然存在,但只是处于禁用状态。
通过让源代码通过像你这样的编译器,这些语句可以被删除,这将减少最终输出的字节大小。
答案 2 :(得分:0)
认为它等同于这样的东西:
// in a header somewhere...
// debug is off by default unless turned on at compile time
#ifndef DEBUG
#define DEBUG 0
#endif
// in your code...
var response = getSomeData({foo:1, bar:2});
#if DEBUG
console.log(response);
#endif
doStuffWith(response);
这种东西在编译语言中是完全可以接受的,那么为什么不在(预处理)javascript中呢?
答案 3 :(得分:0)
我认为它在几年后很有用(可能非常有用),并且可能是大多数开发人员了解JavaScript中发生的事情的最简单方法。那是因为IDE和其他工具要么不够成熟,要么在使用时广泛使用。
我主要在Microsoft堆栈中工作(所以我对其他环境并不熟悉),但是使用VS2008 / VS2010,Fiddler和IE8(呃! - 几年落后于FF)开发工具和FF工具(如firebug / hammerhead)等工具/ yslow / etc。,你的JavaScript中的胡椒警报不再是调试的必要条件。 (可能有一些实例很有用 - 但现在几乎没有那么多。)能够单步执行JavaScript,检查请求/响应,并在运行中进行修改确实使调试警报语句几乎过时。
所以,//调试很有用 - 现在可能不是很多。
答案 4 :(得分:0)
我使用了以下自制的stuf:
// Uncomment to enable debug messages
// var debug = true;
function ShowDebugMessage(message) {
if (debug) {
alert(message);
}
}
因此,当您声明变量debug
设置为true
时,所有ShowDebugMessage()
次调用也会调用alert()
。因此,只需在代码中使用它,忘记ifdef
之类的条件或调试输出行的手动注释。
答案 5 :(得分:0)
对于没有任何特定重写控制台的自定义项目。
我建议使用:https://github.com/sunnykgupta/jsLogger,由我撰写。
功能强>