如果我有一個節點模塊(我寫的),我想通過它的價值,我可以這樣做:我應該如何將選項傳遞給節點模塊?
var someValue process.env.SomeKey || '';
var someModule = require('./someModule');
someModule.setOption({ 'SomeKey' : someValue });
但感覺像我重新發明輪子。
有沒有更好的方法來做到這一點或完全是主觀的?
如果我有一個節點模塊(我寫的),我想通過它的價值,我可以這樣做:我應該如何將選項傳遞給節點模塊?
var someValue process.env.SomeKey || '';
var someModule = require('./someModule');
someModule.setOption({ 'SomeKey' : someValue });
但感覺像我重新發明輪子。
有沒有更好的方法來做到這一點或完全是主觀的?
在一般情況下,您只需從模塊導出功能:
module.exports = function(opts){
return {
// module instance
};
}
然後在需要頁面:
var mod = require('module')({ someOpt: 'val' });
但在現實中,這樣做不過你想要的。沒有一套完整的標準。
我通常會構建具有相似組件的模塊,有時候只是一個類,或者甚至只是選擇一些方法。
(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();
當然,你不必只通過各地的選擇對象:)
是的,它是完全主觀的。
這樣做,你演示的方式是好的。您也可以通過將其分配給module.exports
來導出函數或類。