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
- 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.
- Exportar Módulos: Utilizamos
module.exportsoexportspara exportar funciones, objetos o valores desde un módulo. - 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: 2Ejemplo 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: worldEjercicio Práctico
Ejercicio 1: Crear y Usar un Módulo
- Crea un archivo llamado
mathOperations.js. - En
mathOperations.js, crea y exporta las siguientes funciones:multiply(a, b): Devuelve el producto deayb.divide(a, b): Devuelve el cociente deayb.
- Crea un archivo llamado
app.js. - En
app.js, importa el módulomathOperationsy usa las funcionesmultiplyydividepara 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: 7Conclusió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
- Creando un Servidor HTTP Simple
- Manejo de Solicitudes y Respuestas
- Sirviendo Archivos Estáticos
- Enrutamiento
Módulo 5: NPM y Gestión de Paquetes
- Introducción a NPM
- Instalación y Uso de Paquetes
- Creación y Publicación de Paquetes
- Versionado Semántico
Módulo 6: Framework Express.js
- Introducción a Express.js
- Configuración de una Aplicación Express
- Middleware
- Enrutamiento en Express
- Manejo de Errores
Módulo 7: Bases de Datos y ORMs
- Introducción a las Bases de Datos
- Usando MongoDB con Mongoose
- Usando Bases de Datos SQL con Sequelize
- Operaciones CRUD
Módulo 8: Autenticación y Autorización
- Introducción a la Autenticación
- Usando Passport.js
- Autenticación JWT
- Control de Acceso Basado en Roles
Módulo 9: Pruebas y Depuración
- Introducción a las Pruebas
- Pruebas Unitarias con Mocha y Chai
- Pruebas de Integración
- Depuración de Aplicaciones Node.js
Módulo 10: Temas Avanzados
- Módulo Cluster
- Hilos de Trabajo
- Optimización del Rendimiento
- Construcción de APIs RESTful
- GraphQL con Node.js
Módulo 11: Despliegue y DevOps
- Variables de Entorno
- Usando PM2 para la Gestión de Procesos
- Desplegando en Heroku
- Integración y Despliegue Continuos
