Node.js Creando un módulo hello-world.js


Ejemplo

Node proporciona la interfaz module.exports para exponer funciones y variables a otros archivos. La forma más sencilla de hacerlo es exportar solo un objeto (función o variable), como se muestra en el primer ejemplo.

hola-mundo.js

module.exports = function(subject) {
    console.log('Hello ' + subject);
};

Si no queremos que la exportación completa sea un solo objeto, podemos exportar funciones y variables como propiedades del objeto de exports . Los tres ejemplos siguientes demuestran esto de maneras ligeramente diferentes:

  • hello-venus.js: la definición de la función se realiza por separado y luego se agrega como una propiedad de module.exports
  • hello-jupiter.js: las definiciones de funciones se ponen directamente como el valor de las propiedades de module.exports
  • hello-mars.js: la definición de la función se declara directamente como una propiedad de las exports que es una versión corta de module.exports

hola-venus.js

function hello(subject) {
    console.log('Venus says Hello ' + subject);
}

module.exports = {
    hello: hello
};

hola-jupiter.js

module.exports = {
    hello: function(subject) {
      console.log('Jupiter says hello ' + subject);
    },

    bye: function(subject) {
      console.log('Jupiter says goodbye ' + subject);
    }
};

hola-mars.js

exports.hello = function(subject) {
    console.log('Mars says Hello ' + subject);
};

Módulo de carga con nombre de directorio

Tenemos un directorio llamado hello que incluye los siguientes archivos:

index.js

// hello/index.js
module.exports = function(){
    console.log('Hej');
};

main.js

// hello/main.js
// We can include the other files we've defined by using the `require()` method
var hw = require('./hello-world.js'),
    hm = require('./hello-mars.js'),
    hv = require('./hello-venus.js'),
    hj = require('./hello-jupiter.js'),
    hu = require('./index.js');

// Because we assigned our function to the entire `module.exports` object, we
// can use it directly
hw('World!'); // outputs "Hello World!"

// In this case, we assigned our function to the `hello` property of exports, so we must
// use that here too
hm.hello('Solar System!'); // outputs "Mars says Hello Solar System!"

// The result of assigning module.exports at once is the same as in hello-world.js
hv.hello('Milky Way!'); // outputs "Venus says Hello Milky Way!"

hj.hello('Universe!'); //  outputs "Jupiter says hello Universe!"
hj.bye('Universe!'); // outputs "Jupiter says goodbye Universe!"

hu(); //output 'hej'