2011-06-16 110 views
12

如果我有一個節點模塊(我寫的),我想通過它的價值,我可以這樣做:我應該如何將選項傳遞給節點模塊?

var someValue process.env.SomeKey || ''; 

var someModule = require('./someModule'); 

someModule.setOption({ 'SomeKey' : someValue }); 

但感覺像我重新發明輪子。

有沒有更好的方法來做到這一點或完全是主觀的?

回答

32

在一般情況下,您只需從模塊導出功能:

module.exports = function(opts){ 
    return { 
     // module instance 
    }; 
} 

然後在需要頁面:

var mod = require('module')({ someOpt: 'val' }); 

但在現實中,這樣做不過你想要的。沒有一套完整的標準。

2

我通常會構建具有相似組件的模塊,有時候只是一個類,或者甚至只是選擇一些方法。

(function() { 
    var myClass = function (opts) { 
    this.opts = opts; 
    }; 
    myClass.prototype.blah = function() { 
    console.log('blah'); 
    }; 
    exports.myClass = myClass; 
})(); 

然後在您使用該模塊的文件中。

var mymodule = require('./mymodule'); 
var myInstance = new mymodule.myClass({opt1: 'blah'}); 
myInstance.blah(); 

當然,你不必只通過各地的選擇對象:)

1

是的,它是完全主觀的。

這樣做,你演示的方式是好的。您也可以通過將其分配給module.exports來導出函數或類。

相關問題