2012-05-06 7 views
1

node_modules依存関係は、アプリケーションコードの先頭でグローバルに宣言するか、必要な時点でローカルに宣言する必要がありますか?ベストプラクティスがあるのだろうかと思っています。Node.js:node_modulesをグローバルに宣言するか、必要に応じてローカルで宣言しますか?

例えば、index.jsを使用してアプリケーションをブートストラップし、スクリプトが必要な場合はスクリプトが必要です。私のsecurity.jsモジュールは、例えばnode_hashの使用を必要とするかもしれません。今、私は中security.js

var node_hash = require('node_hash') 

として、あるいは世界的には index.jsでそれを必要とすることを要求しなければならないので、 security.jsに利用可能です(だけでなく、他のすべて)?

答えて

1

ノードでは、実際には「グローバルに必要」という概念はありません。モジュールを別のモジュールに追加する必要がある場合、必要なモジュールは、のみ必要なモジュールで利用できます。必要なモジュールを別の場所で使用したい場合は、もう一度それを要求する必要があります(または、何らかの形で返されたオブジェクトを他のモジュールに渡す必要があります)。

したがって、正しい(唯一の、本当に)答えは、必要な場所でそれらを要求することです。 Nodeはrequire cacheを使用するので、必要なモジュールは実際に一度だけ評価され、同じファイルの複数の要求に対して同じオブジェクトが返されることに注意してください。

[編集] varずに宣言された変数への代入は、(例えば、それはノード内globalを介してアクセスすることができる)globalスコープに割り当て。非常にまれにあなたはこれをしたいですか?変数が宣言された場所を特定することが困難になるだけでなく、名前空間の問題を引き起こす可能性があります。

+0

私は 'node_hash = require( 'node_hash')'( 'var 'がないことに注意してください)を使うことができ、そのように動作するコードを書いたので、その後はすべての必要なモジュールにグローバルに適用されます。モジュールをグローバル変数に割り当てるのが良いか悪いのかを知りたい。 – Andy

+0

私はあなたが何を意味するかを見ます。私の答えを更新する。 –

関連する問題