2017-05-15 9 views
1

具体的な質問があります:平均スタック - 「グローバル」モジュールを使用すると、Webアプリケーションを処理する際に問題が発生する可能性がありますか?

私はあるファイルのAPI内から別のファイルの変数として保存する必要がある変数(具体的に構成されたファイル名)を持っています。私のコードが設定されている方法では、グローバル変数を使用せずに、この変数をあるファイルから別のファイルに取得する方法はありません。私はいくつかの異なる方法を見ていて、グローバルモジュールを作成することに決めました。ここで

は私のグローバルモジュール(globals.js)内のコードです:

var globals = { 
    'new_img': '' 
} 

module.exports = globals; 

私が書いた:私のserver.jsで、私のroutes.jsで

var globals  = require('./public/js/globals'); 

をので、すべての私のAPIとコントローラのこのモジュールへのアクセス権があります。今

、私の実際の質問:私は、Webページの独自のインスタンスを持って、このWebアプリケーションと複数の人にサービスを提供する場合、それらはすべて同じグローバルモジュールを使用するのでしょうか?これは私の望む効果ではないので、他の誰かがこれについてもっと良い方法を持っているのだろうかと思います。

ありがとうございました!

+0

だから、「new_img」はユーザーに基づいて変更できますか? – George

+0

はい、正しいです。 –

答えて

0

はいこれらは、と同じインスタンスを使用します。

そのパターンはシングルトンです。エクスポートしてグローバル変数を作成すると、メモリ内の同じスポットがアプリ全体で表示されます。

デバッガの助けを借りて、requireコードを深く解析して、Nodejsがその呼び出しの結果をキャッシュして毎回同じインスタンスを返すことを確認できます。

NodeJSソースコード

enter image description here enter image description here

あなたの望ましい結果は、オブジェクトのクローンを作成することができます別のインスタンスを持っている場合。

var globals = _.extend({}, require('./public/js/globals')); //ecma5 + underscore.js 

var globals = Object.assign({}, require('./public/js/globals')); //ecma6 
関連する問題