En Node.js, los módulos son una forma de organizar y reutilizar el código. Node.js utiliza el sistema de módulos CommonJS, que permite dividir el código en archivos y luego importarlos cuando sea necesario. En esta lección, aprenderemos cómo funcionan los módulos en Node.js y cómo utilizar la función require() para importar y exportar módulos.

Conceptos Clave

  1. Módulos: Un módulo en Node.js es cualquier archivo JavaScript. Cada archivo tiene su propio contexto y no puede interferir con otros archivos a menos que se exporten e importen explícitamente.
  2. Exportar Módulos: Utilizamos module.exports o exports para exportar funciones, objetos o valores desde un módulo.
  3. Importar Módulos: Utilizamos la función require() para importar módulos en otros archivos.

Exportar Módulos

Para exportar algo desde un módulo, utilizamos module.exports o exports. Aquí hay un ejemplo simple:

// archivo: math.js

// Exportando una función
function add(a, b) {
    return a + b;
}

// Exportando un objeto
const math = {
    add: add,
    subtract: function(a, b) {
        return a - b;
    }
};

// Usando module.exports
module.exports = math;

En este ejemplo, estamos exportando un objeto math que contiene dos funciones: add y subtract.

Importar Módulos

Para importar un módulo en otro archivo, utilizamos la función require(). Aquí hay un ejemplo de cómo importar y utilizar el módulo math que creamos anteriormente:

// archivo: app.js

// Importando el módulo math
const math = require('./math');

// Usando las funciones del módulo math
const sum = math.add(5, 3);
const difference = math.subtract(5, 3);

console.log(`Sum: ${sum}`); // Output: Sum: 8
console.log(`Difference: ${difference}`); // Output: Difference: 2

Ejemplo Práctico

Vamos a crear un módulo que maneje operaciones de cadena de texto y luego lo importaremos en otro archivo.

Paso 1: Crear el Módulo

// archivo: stringOperations.js

// Función para convertir una cadena a mayúsculas
function toUpperCase(str) {
    return str.toUpperCase();
}

// Función para convertir una cadena a minúsculas
function toLowerCase(str) {
    return str.toLowerCase();
}

// Exportando las funciones
module.exports = {
    toUpperCase,
    toLowerCase
};

Paso 2: Importar y Usar el Módulo

// archivo: app.js

// Importando el módulo stringOperations
const stringOperations = require('./stringOperations');

// Usando las funciones del módulo stringOperations
const upper = stringOperations.toUpperCase('hello');
const lower = stringOperations.toLowerCase('WORLD');

console.log(`Uppercase: ${upper}`); // Output: Uppercase: HELLO
console.log(`Lowercase: ${lower}`); // Output: Lowercase: world

Ejercicio Práctico

Ejercicio 1: Crear y Usar un Módulo

  1. Crea un archivo llamado mathOperations.js.
  2. En mathOperations.js, crea y exporta las siguientes funciones:
    • multiply(a, b): Devuelve el producto de a y b.
    • divide(a, b): Devuelve el cociente de a y b.
  3. Crea un archivo llamado app.js.
  4. En app.js, importa el módulo mathOperations y usa las funciones multiply y divide para realizar algunas operaciones matemáticas. Imprime los resultados en la consola.

Solución

mathOperations.js

// archivo: mathOperations.js

function multiply(a, b) {
    return a * b;
}

function divide(a, b) {
    if (b === 0) {
        throw new Error('Division by zero');
    }
    return a / b;
}

module.exports = {
    multiply,
    divide
};

app.js

// archivo: app.js

const mathOperations = require('./mathOperations');

const product = mathOperations.multiply(6, 7);
const quotient = mathOperations.divide(42, 6);

console.log(`Product: ${product}`); // Output: Product: 42
console.log(`Quotient: ${quotient}`); // Output: Quotient: 7

Conclusión

En esta lección, hemos aprendido cómo funcionan los módulos en Node.js y cómo utilizar require() para importar y exportar módulos. Los módulos son una herramienta poderosa para organizar y reutilizar el código, lo que facilita el mantenimiento y la escalabilidad de las aplicaciones. En el próximo módulo, profundizaremos en el sistema de archivos y las operaciones de entrada/salida en Node.js.

Curso de Node.js

Módulo 1: Introducción a Node.js

Módulo 2: Conceptos Básicos

Módulo 3: Sistema de Archivos y E/S

Módulo 4: HTTP y Servidores Web

Módulo 5: NPM y Gestión de Paquetes

Módulo 6: Framework Express.js

Módulo 7: Bases de Datos y ORMs

Módulo 8: Autenticación y Autorización

Módulo 9: Pruebas y Depuración

Módulo 10: Temas Avanzados

Módulo 11: Despliegue y DevOps

Módulo 12: Proyectos del Mundo Real

© Copyright 2024. Todos los derechos reservados