Как передать параметры в модуль node?
Если у меня есть модуль node (я написал), и я хочу передать ему значение, я мог бы сделать это:
var someValue process.env.SomeKey || '';
var someModule = require('./someModule');
someModule.setOption({ 'SomeKey' : someValue });
но мне кажется, что я изобретаю колесо.
Есть ли лучший способ сделать это или это полностью субъективно?
Ответы
Ответ 1
В общем, вы просто экспортируете функцию из модуля:
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();
Конечно, вам не нужно просто обходить объект опций:)
Ответ 3
Да, это полностью субъективно.
Делать это так, как вы показали, прекрасно. Вы также можете просто экспортировать функцию или класс, назначив ее module.exports
.