在需要时初始化模块

时间:2014-11-06 10:56:29

标签: node.js module

我有一个内置初始化代码的模块。应在加载模块时执行init。目前我这样做:

 // in the module

 exports.init = function(config) { do it }

 // in main

 var mod = require('myModule');
 mod.init(myConfig)

这有效,但我想更简洁:

 var mod = require('myModule').init('myConfig')

init应该返回什么才能使mod引用有效?

1 个答案:

答案 0 :(得分:35)

您可以返回this,在这种情况下,这是对exports的引用。

exports.init = function(init) {
    console.log(init);
    return this;
};

exports.myMethod = function() {
    console.log('Has access to this');
}
var mod = require('./module.js').init('test'); //Prints 'test'

mod.myMethod(); //Will print 'Has access to this.'

或者您可以使用构造函数:

module.exports = function(config) {
    this.config = config;

    this.myMethod = function() {
        console.log('Has access to this');
    };
    return this;
};
var myModule = require('./module.js')(config);

myModule.myMethod(); //Prints 'Has access to this'