При необходимости инициализировать модуль

У меня есть модуль с некоторым кодом инициализации внутри. 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

Вы можете вернуть 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'