我应该如何将选项传递给节点模块?
如果我有一个节点模块(我写了),我想传递一个值,我可以这样做:
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
来导出函数或类。