2017-05-10 14 views
0

これはNodeJSのシングルトンとして機能するのはなぜですか。どのように機能しますか?本質的にはNodeJSでこれがシングルトンとして動作する理由

const io = require('socket.io')(); 

const singleton = module.exports = io; 

私は複数回、このファイルをインポートする場合は、私が最初にインスタンス化socket.ioのインスタンスを取得します。

+0

は、私はあなたのために明確にすることができます何かはありますか? –

答えて

3

モジュールはノードごとにキャッシュされます。インスタンスを返すので、requireこのファイルを取得するたびに同じインスタンス(io)が返されます。ライン

const io = require('socket.io')(); 

は、このモジュールが初めて必要なときにのみ実行されます。その後、このモジュールを必要とするモジュールは返されたインスタンスのみを取得します。ここで

は、キャッシングの公式ドキュメントです:https://nodejs.org/api/modules.html#modules_caching

+0

このコードの 'const singleton ='の部分は実際には関係ありませんか? –

+1

本当にそうではありません。これを削除することができ、この例でも同じように動作します。 –

関連する問題