2011-06-16 12 views
12

Si tengo un módulo de nodo (escribí) y quiero pasar un valor, que podía hacer esto:¿Cómo debo pasar opciones a un módulo de nodo?

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

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

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

pero se siente como que estoy reinventando la rueda.

¿Hay una manera mejor de hacer esto o es totalmente subjetivo?

Respuesta

32

En general, sólo tiene que exportar una función del módulo:

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

continuación, en la página que requiere:

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

Pero, en realidad, lo hacen sin embargo que usted desea. No hay un estándar establecido.

2

Generalmente construyo módulos que tienen componentes similares, a veces solo una clase, o incluso solo una selección de métodos.

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

Luego en su archivo que está utilizando ese módulo.

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

Por supuesto que no es necesario pasar a la vuelta de un objeto de opciones :)

1

Sí, es totalmente subjetiva.

Haciéndolo de la manera que demostró está bien. También puede exportar una función o una clase asignándola al module.exports.

Cuestiones relacionadas