Patrones de diseño en Node.js: Reutilización y mantenibilidad

Patrones de diseño en Node.js: Reutilización y mantenibilidad

¿Cuáles son los patrones de uso de módulos en NodeJS?

Es posible asignar a module.exports una función anónima.

// modulos/aleatorio.js
module.exports = function () {
    console.log(Math.round(Math.random() * 100000));
};

De forma que podemos generar un numero aleatorio directamente.

// imprimir_aleatorios.js
var aleatorio = require("./modulos/aleatorio");
aleatorio();

Ahora, que pasa si queremos generar aleatorios pero no de números sino nombres de personas, podemos cambiar nuestro módulo para que tenga 2 funciones asociadas al módulo.

// modulos/aleatorio.js
module.exports.numero = function () {
    console.log(Math.round(Math.random() * 100000));
};

var nombres = [
    "Raul",
    "Pedro",
    "Juan",
    "Alberto",
    "Antonio",
    "Erika",
    "Alejandra",
    "Isabel",
];

module.exports.nombre = function () {
    indice_aleatorio = Math.floor(Math.random() * nombres.length);
    console.log(nombres[indice_aleatorio]);
};
// imprimir_aleatorios.js
var numero_aleatorio = require("./modulos/aleatorio").numero;
numero_aleatorio();
var nombre_aleatorio = require("./modulos/aleatorio").nombre;
nombre_aleatorio();

Lo anterior definitivamente no es ciencia de cohetes pero bien vale la pena saber que podemos tener atajos al momento de acceder a elementos de un módulo.