3

次のような基本的な質問があります。

同じディレクトリに main.js と logger.js という 2 つの個別のモジュールがあります。logger.js は次のとおりです。

function Logger(){
    return this;
};

Logger.prototype.log = function(str) {
    console.log('[' + this.mPrefix + ']' + str);
};

Logger.prototype.init = function(pr){
    this.mPrefix = pr;
}
module.exports = Logger;

今、次のようにメインモジュールでロガーを使用したいと思います:

var logger = require('./logger.js');
logger.init('MAIN');

logger.log('foo');

しかし node は、 orLoggerという名前のメソッドがないと主張しています。自己オブジェクトを返す関数を渡しているので、私も試しましたが、役に立ちませんでした。他のモジュールでオブジェクトを定義してエクスポートするためのベスト プラクティスは何ですか? ちなみに、これを行うことでうまくいきます:initlogrequire('./logger.js')()

var logger = require('./logger.js');
var l = new logger();
l.init('MAIN');
l.log('bar');

しかし、それは私には不器用に思えます。説明と提案はありますか?

4

2 に答える 2