动态启用/禁用调试代码

时间:2013-08-23 15:15:06

标签: javascript ajax debugging dynamic

我正在编写一个体面的JavaScript动画库,我想在其中包含调试代码。我可以轻松地进行检查:

if(myLib.debugger){
   console.warn('warning message');
}

但是,如果每秒运行几千次,最终会导致性能问题。在整个代码中添加一些检查,效果将更加明显。

我想知道的是,如果应该启用调试器,是否可以检查onload,如果是这样的话......转到这样的话:

//debugger if(!this.name) console.warn('No name provided');

成:

if(!this.name) console.warn('No name provided');

如果代码未启用,则将代码注释掉,如果是,则取消注释,从而消除任何可能的性能问题。如果通过ajax加载,可以用整个脚本上的正则表达式以某种方式完成吗?我试图避免需要2个版本的相同代码,lib.dbug.js和lib.js.

跨浏览器兼容性对此并不重要(我真的只担心新的浏览器),我认为有一个项目很好。如果可能的话,那将是一件好事。

非常感谢任何见解。

2 个答案:

答案 0 :(得分:2)

执行此操作的最简单方法是检查是否应禁用调试器,如果是,请将其替换为在脚本刚开始时不执行任何操作的模拟对象:

if (!myLib.debugger) {
    window.console = (function () {
        var newConsole = {};
        var key;

        for (key in window.console) {
            if (typeof window.console[key] === 'function') {
                newConsole[key] = function () {};
            }
        }

        return newConsole;
    }());
}

这种方法的开销应该可以忽略不计。

答案 1 :(得分:1)

如果这是一个JavaScript库...那么我希望作为第三方开发者,我可以下载/使用2个版本。生产版本(无调试,AND最小化)。如果我想调试,我会指向库的调试版本。

e.g。

<script src="foo-lib-min.js"></script>
<!-- swap to this for debugging <script src="foo-lib-full.js"></script>-->