2016-05-25 5 views
1

requiredを取得するモジュールがありますが、モジュールでコードを一時的に実行したくありません。私はちょうどそれをコメントすることができますが、その後、ロードするモジュールから早期に退出する方法があるかどうか疑問に思っています。プロセスを停止せずにノードモジュールを早期にロードすることを終了します

モジュールのコードで実行フローを停止させる方法が組み込まれていて、早期に「戻る」ことはありますか?

答えて

3

実際には、組み込みの方法があります。すべてのノードモジュールはモジュール関数ラッパーの内部にロードされ、モジュールはその関数の本体として実行されます。したがって、コードの残りの部分が実行されるのを停止するには、モジュール内の任意の場所にあるreturnをそのまま使用することができます。

ノードモジュールは、このような関数ラッパーの内部で実行されます:そのよう

(function (exports, require, module, __filename, __dirname, process, global) { 
    // module code is here 

    // a return statement skips executing any more code in your module after that statement 
    return; 
}); 

、あなただけのどこかのモジュールでreturnステートメントを使用することができ、それがの残りの部分をスキップし、モジュールのラッパー関数から返されますモジュール内のコード


おそらく、コード、もう少し自己記述していない余分なreturn文はモジュールの真ん中にありますなぜ不思議誰かを残しを作るためにifステートメントを使用したり、モジュール内のためのクリーンなコードです:

// this code temporarily removed from being executed 
if (someBoolean) { 
    // your module code here 
} 

またはしばらく削除する予定がある場合は、大部分のコードをコメントアウトしてください。

+0

リンターはこれが好きではありませんが、私はリターンが機能するテストランで検証しました。 – nephets

+0

@nephets - 代わりに 'if'文を使用するだけのメモを追加しました。もう1つの答えは、同じリントの警告があります。 – jfriend00

+0

babelはreturn文を使ってモジュールを翻訳しません。 – Mr5o1

1

ビルドイン方法はありませんが、次の回避策を使用できます。 IIFEにモジュール全体をラップし、return文を使用します。

(function() { 

    // some code 

    // stop execution here 
    return; 

    // some code 

})() 
関連する問題