私はnode.jsモジュールにパターンを使用しています。これは私には明らかであると思われるので、何か間違っていなければならないと思っています。モジュールにグローバルなプライベート変数を保持するために、モジュールオブジェクトのプロパティとしてそれらを添付するだけです。これと同じように:第二の例では、ファイルの先頭にvar someClient
を探して行く必要があるため名前空間として `module`を使用します。
module.exports = {
init: function() {
module.someClient = initializeSomethingHere()
},
someMethod: function(done) {
module.someClient.doSomething(done)
}
}
これは...
var someClient;
module.exports = {
init: function() {
someClient = initializeSomethingHere()
},
someMethod: function(done) {
someClient.doSomething(done)
}
}
...このようなものよりも、私には望ましいと思われますの方法でvar
キーワードの省略が意図的であることを確認してください。私はこのパターンが他の場所で使われていることは一度も見たことがないので、理想的ではないものが欠けているのだろうかと思います。
思考?
私は必要なものに応じて両方を使用します。コンストラクタをエクスポートする必要がある場合、オプション2。たくさんの異なる場所で共有されるオブジェクトが必要な場合、オプション1。どちらも間違っていません。どちらも「最高」です。ノードモジュールは*キャッシュ*されているので、このコードが 'require()'していると、オプション1 *は変更が安全ではないので危険ではありません。時にはそれがまさにあなたが望むものです。また、コードを見てみましょう:完全に異なるもの(プロトタイプのオブジェクトコンストラクタ対オブジェクトリテラル)をエクスポートしているので、必要な場合は完璧です。 –