node (2): crear módulos

Cómo crear nuestros propios módulos

Aleksandra Ekster

archivado en: JavaScript / 8 marzo, 2015 / taller:

En la entrada anterior de esta serie dedicada a node js vimos cómo levantar un primer server y que node está formado por módulos, los cuales podemos ir cargando, requiriendo, a medida que los vayamos necesitando mediante el método require(). Pero nosotros también podemos crear módulos ^^. La jugada es la siguiente:

1. Pelín refactorizado respecto a la entrada anterior para hacerlo más limpio, en un archivo que podemos llamar server.js vamos a incluir el código necesario para levantar un server.

/* Función para atender las peticiones que pasaremos al método createServer() más adelante */

function onRequest(req, resp) {

/* escribimos las cabeceras */

resp.writeHead(200, {"content-Type": "text/html"});

/* escibimos el cuerpo del mensaje */

resp.write("Baaazinga!");

/* Cerramos el mensaje */

resp.end();

}

/* Instanciamos el módulo http. Por convención, las variables donde cacheamos
los módulos se denominan como estos */

var http = require('http');

/* Creamos el server pasándole nuestra función onRequest y lo ponemos a la escucha en el puerto 3000 */

http.createServer(onRequest).listen(3000);

console.log("Servidor en marcha");

2. Para tener el módulo disponible en cualquier lugar lo encapsulamos en una función y lo exportamos mediante exports, una operación que en esencia consiste en añadirlo mediante la notación de puntos al objeto exports.

var http = require('http');

function initServer() {

function onRequest(req, resp) {

resp.writeHead(200, {"content-Type": "text/html"});

resp.write("Baaazinga!");

resp.end();

}

http.createServer(onRequest).listen(3000);

console.log("Servidor en marcha");

}

exports.initServer = initServer;

3. Ahora podemos importar nuestro módulo como cualquier otro. Por ejemplo, en un archivo llamado index.js:

var server = require("./server.js");

server.initServer();

Conviene que cada módulo se encargue de una cosa específica, no de varias a la vez

Bueno, pues ahora que ya sabemos cómo importar y exportar módulos, podemos organizar nuestro código de forma más interesante, como las tres que indico a continuación, que son las que más me gustan de las varias que maneras que podemos hacerlo en node.

Tres formas de declarar módulos en node

a) Mediante un objeto preparado con el patrón reveal con métodos públicos y privados (mi favo ^^).

'use strict';

const foo = (function() {

const module = {};

const self = module;

module._privateMethod = (numParam)=> {

let temp = 1 + numParam;

return temp;

};

module.publicMethod = (numParam)=> {

let bar = self._privateMethod(numParam);

return bar;

};

return {

publicMethod: module.publicMethod

};

} )();

module.exports = foo;

b) Mediante constructor (pendiente ver cómo adaptarlo a las clases de ecma script 6).

function Foo(numParam) {

this.bar = numParam || 0;

}

Foo.prototype.publicMethod = function() {

let temp = 1 + this.bar;

return temp;

};

module.exports = Foo;

/* use: 

const Foo = require('./foo');

let instFoo = new Foo(4);

console.log(instFoo.publicMethod());

*/

c) Exportando una instancia.

function Foo(numParam) {

this.bar = numParam || 0;

}

Foo.prototype.publicMethod = function() {

let temp = 1 + this.bar;

return temp;

};

module.exports = new Foo(5);

/* use:

const instFoo = require('./foo');

console.log(instFoo.publicMethod());

*/

|| Tags: , ,

valoración de los lectores sobre node (2): crear módulos

  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • 5 sobre 5 (4 votos)

¿Te ha parecido útil o interesante esta entrada?
dormido, valoración 1 nadapensativo, valoración 2 un poco sonrisa, valoración 3 a medias guiño, valoración 4 bastante aplauso, valoración 5 mucho

Tú opinión es muy importante, gracias por compartirla!

Los comentarios están cerrados.