1

C ++では、コンパイル済みコードを高速に保ち、本番環境で不要なデバッグコードによって妨げられないようにするために、前処理ディレクティブを使用してデバッグコードのコンパイルを省略できます。

JavaScriptでこれを行うための相関的な方法はありますか?私が過去に行ったことは、デバッグコードをコメントアウトすることですが、よりクリーンな方法が必要です。

以下の例は、debugがtrueに設定されている場合にアクティブになる4つのifステートメントを示しています。ただし、本番環境では、falseに設定されることがわかっている場合に、これを4回チェックしたくありません。私が言ったように、私はそれを一行に詰め込んでそれをコメントアウトすることができました...しかし私はそれをするためのきれいな方法が欲しいですか?

/**
 **  cType
 */

function cType( o_p ) {
    if( debug ) {
        var t1, t2, t3, t4, i1, i2, i3; t1 = new Date().getTime();
    }
    o_p = MType[ o_p.model ].pre( o_p ); 
    if ( o_p.result !== 'complete' ) {
        if( debug ) {
            t2 = new Date().getTime();
            console.log( '---------------Send to Server - object_pipe: \n ' + o_p.toSource() ); 
        } 
        var string_pipe = JSON.stringify( o_p );
        cMachine( 'pipe=' + string_pipe , function( string_pipe ) {
            if( debug ) { 
                console.log( '---------------Receive from Server - object_pipe: \n ' + string_pipe ); 
                t3 = new Date().getTime();
            }
            MType[ o_p.model ].post( JSON.parse( string_pipe ) );
            if( debug ) {
                t4 = new Date().getTime(); i1 = t2-t1 ; i2 = t3-t2 ; i3 = t4-t3;
                console.log( '---------------Pre, Transit, Post = ', i1, i2, i3 );  
            }
        } );
    }
}
4

3 に答える 3

2

次のように、いつでもcプリプロセッサに渡すことができます。

gcc -E input.js -o output.js

これにより、#ifを使用したり、マクロを含めたりすることができます。

于 2012-07-08T16:11:43.060 に答える
1

RequireJSを使用する場合は、ビルドプラグマhas.js統合を使用して、最適化(縮小)時にコードフラグメントを無効/有効にすることができます。

于 2012-07-08T16:14:18.380 に答える
0

いいえ、Javascriptはコンパイルされず、解釈されます。したがって、別のユーティリティを介して非標準のJavascript(おそらくJavascriptではなくなる可能性があります)コードを渡さない限り、前処理ディレクティブを使用することはできません。

于 2012-07-08T16:10:39.830 に答える