需要时初始化模块

我有一个模块,里面有一些初始化代码。 初始化应在模块加载时执行。 目前我正在这样做:

// in the module exports.init = function(config) { do it } // in main var mod = require('myModule'); mod.init(myConfig) 

这有效,但我想更简洁:

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

为了保持mod参考工作, init应该返回什么?

你可以返回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'