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.exports
oexports
para 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: 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
- Crea un archivo llamado
mathOperations.js
. - En
mathOperations.js
, crea y exporta las siguientes funciones:multiply(a, b)
: Devuelve el producto dea
yb
.divide(a, b)
: Devuelve el cociente dea
yb
.
- Crea un archivo llamado
app.js
. - En
app.js
, importa el módulomathOperations
y usa las funcionesmultiply
ydivide
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
- 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