0

私は、デバッグ コードを含めたい、適切なサイズの JavaScript アニメーション ライブラリを作成しています。簡単にチェックできます。

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

ただし、これが 1 秒間に数千回実行されると、最終的にパフォーマンスの問題が発生します。コード全体にさらにいくつかのチェックを追加すると、効果がさらに顕著になります。

私が疑問に思っているのは、デバッガーを有効にする必要がある場合に onload をチェックできるかどうかです。そうであれば...次のようにします。

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

の中へ:

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

有効になっていない場合はコードをコメントのままにし、有効になっている場合はコメントを解除して、パフォーマンスの問題の可能性を取り除きます。ajaxを介してロードされた場合、スクリプト全体で正規表現を使用してこれを何らかの形で行うことができますか? lib.dbug.js と lib.js という同じコードの 2 つのバージョンが必要になるのを避けようとしています。

これに関しては、ブラウザ間の互換性はそれほど重要ではありません (私が本当に心配しているのは新しいブラウザだけです)。しかし、それが可能であれば、それは素晴らしいことです。

どんな洞察も大歓迎です。

4

2 に答える 2

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;
    }());
}

このアプローチのオーバーヘッドは無視できるはずです。

于 2013-08-23T15:18:48.097 に答える
1

これが JavaScript ライブラリである場合は、サード パーティの開発者として、2 つのバージョンをダウンロード/使用できることを期待します。製品バージョン (デバッグなし、および最小化)。デバッグしたい場合は、代わりにライブラリのデバッグ バージョンを指定します。

例えば

<script src="foo-lib-min.js"></script>
<!-- swap to this for debugging <script src="foo-lib-full.js"></script>-->
于 2013-08-23T15:19:34.703 に答える