我应该如何将选项传递给节点模块?

如果我有一个节点模块(我写了),我想传递一个值,我可以这样做:

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' }); 

但实际上,不pipe你想要做什么。 没有一个一成不变的标准。

我通常会构build具有相似组件的模块,有时候只是一个类,甚至只是select一些方法。

 (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来导出函数或类。