Módulos integrados de Node.js
Los módulos integrados de Node.js son módulos de funcionalidad central que vienen incluidos en el tiempo de ejecución de Node.js y se pueden utilizar sin necesidad de instalación adicional. Estos módulos proporcionan funciones básicas del sistema, como operaciones de archivos, comunicación de red, gestión de procesos, etc., y son las herramientas fundamentales para el desarrollo con Node.js.
A diferencia de los módulos de terceros que deben instalarse mediante npm, los módulos integrados se pueden cargar y utilizar directamente mediante larequire()función require(), por ejemplo:
const http = require('http'); // Módulo HTTP
Introducción a los módulos integrados comunes
A continuación se presentan las descripciones detalladas y las vistas generales de funciones de los principales módulos integrados de Node.js.
| Nombre del módulo | Descripción | Clases/métodos comunes | Usos típicos |
|---|---|---|---|
| fs (File System) | Operaciones de sistema de archivos | readFile, writeFile, mkdir, readdir, createReadStream, createWriteStream |
Lectura y escritura de archivos, operaciones de directorios |
| path | Procesamiento de rutas de archivos | join, resolve, dirname, basename, extname |
Procesamiento de rutas multiplataforma |
| http | Servidor/cliente HTTP | createServer, request, get |
Crear servidores/clientes web |
| https | Servidor/cliente HTTPS | createServer, request |
Crear servicios web seguros |
| url | Análisis y procesamiento de URL | parse, format, URLClase |
Análisis y construcción de URL |
| querystring | Procesamiento de cadenas de consulta | parse, stringify |
Procesar parámetros de consulta de URL |
| os | Información del sistema operativo | cpus, freemem, totalmem, homedir, hostname |
Obtener información del sistema |
| events | Manejo de eventos | EventEmitter, on, emit, once |
Sistema de eventos personalizados |
| stream | Operaciones de flujos | Readable, Writable, Duplex, Transform, pipe |
Procesamiento de flujos de datos |
| crypto | Funciones de cifrado | createHash, createCipher, createDecipher, randomBytes |
Cifrado/descifrado/hash |
| zlib | Compresión/descompresión | createGzip, createGunzip, createDeflate, createInflate |
Compresión y descompresión de datos |
| util | Utilidades | promisify, inherits, format, types |
Funciones de utilidad |
| child_process | Gestión de procesos secundarios | exec, execFile, spawn, fork |
Crear procesos secundarios |
| cluster | Gestión de clústeres | fork, isMaster, isWorker |
Equilibrio de carga multiproceso |
| dns | Resolución de nombres de dominio | lookup, resolve, reverse |
Resolución de nombres de dominio |
| domain | Módulo para manejar errores de múltiples operaciones asíncronas | create , run, add |
Proporciona un mecanismo para agrupar múltiples operaciones de E/S diferentes y manejar sus errores de manera unificada. |
| net | Operaciones de red | createServer, connect, Socket |
Servidor/cliente TCP |
| dgram | Datagramas UDP | createSocket, send, bind |
Comunicación UDP |
| readline | Lectura línea por línea | createInterface, on('line') |
Interacción con línea de comandos |
| repl | Intérprete interactivo | start, context |
Crear entornos REPL |
| vm | Máquina virtual | runInContext, createContext, Script |
Ejecutar código JavaScript |
| assert | Pruebas de aserción | equal, strictEqual, deepEqual, throws |
Aserciones para pruebas unitarias |
| buffer | Procesamiento de datos binarios | Buffer, alloc, from, concat |
Manejo de datos binarios |
| console | Salida de consola | log, error, time, timeEnd |
Salida de depuración |
| timers | Temporizadores | setTimeout, setInterval, setImmediate, clearTimeout |
Tareas programadas |
| perf_hooks | Monitoreo de rendimiento | performance, PerformanceObserver |
Medición de rendimiento |
| worker_threads | Hilos de trabajo (workers) | Worker, isMainThread, parentPort |
Programación multihilo |
1. fs (módulo de sistema de archivos)
fsEl módulo proporciona una API para interactuar con el sistema de archivos, que admite operaciones tanto síncronas como asíncronas.
Funciones principales:
- Leer y escribir archivos
- Crear/eliminar directorios
- Monitorear cambios en archivos
- Obtener información de archivos
Código de ejemplo:
Ejemplo
// Lectura de archivo asíncrona
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
// Escritura de archivo síncrona
try {
fs.writeFileSync('output.txt', 'Hello Node.js');
console.log('Archivo escrito exitosamente');
} catch (err) {
console.error(err);
}
2. path (módulo de rutas)
pathEl módulo proporciona funciones de utilidad para procesar rutas de archivos y directorios, y se puede utilizar en distintas plataformas.
Métodos comunes:
path.join()- Unir rutaspath.resolve()- Resolver a ruta absolutapath.basename()- Obtener nombre de archivopath.extname()- Obtener extensión de archivo
Código de ejemplo:
Ejemplo
const fullPath = path.join(__dirname, 'files', 'example.txt');
console.log(fullPath); // Salida similar a: /home/user/project/files/example.txt
const ext = path.extname('index.html');
console.log(ext); // Salida: .html
3. http (módulo HTTP)
httpEl módulo permite que Node.js funcione como servidor o cliente HTTP.
Funciones principales:
- Crear servidores HTTP
- Realizar solicitudes HTTP
- Manejar solicitudes y respuestas HTTP
Código de ejemplo: creación de un servidor simple
Ejemplo
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Node.js Server');
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
4. events (módulo de eventos)
eventsEl módulo proporciona una interfaz de programación impulsada por eventos, que es la base de la programación asíncrona en Node.js.
Conceptos principales:
- Clase EventEmitter
- Escucha de eventos (
on) - Emisión de eventos (
emit)
Código de ejemplo:
Ejemplo
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
// Escuchar evento
myEmitter.on('event', () => {
console.log('¡Evento disparado!');
});
// Emitir evento
myEmitter.emit('event');
5. os (módulo de sistema operativo)
osEl módulo proporciona métodos y propiedades útiles relacionados con el sistema operativo.
Funciones comunes:
- Obtener información de la CPU
- Obtener información de la memoria
- Obtener información de interfaces de red
- Obtener el directorio temporal del sistema
Código de ejemplo:
Ejemplo
console.log(os.platform()); // Plataforma del sistema operativo
console.log(os.totalmem()); // Memoria total del sistema
console.log(os.freemem()); // Memoria disponible del sistema
console.log(os.cpus()); // Información de la CPU
Otros módulos integrados importantes
1. util (módulo de utilidades)
utilEl módulo proporciona diversas funciones de utilidad, incluyendo:
- Comprobación de tipos
- Formateo de cadenas
- Conversión de funciones callback a Promesas
- Herramientas de herencia
2. crypto (módulo de cifrado)
cryptoEl módulo proporciona funciones de cifrado, incluyendo:
- Algoritmos hash
- HMAC
- Cifrado/descifrado
- Firmas digitales
3. stream (módulo de flujos)
streamEl módulo es una interfaz abstracta para el manejo de datos en flujo; muchos módulos de Node.js se implementan basándose en flujos.
4. child_process (módulo de procesos secundarios)
child_processEl módulo permite crear y controlar procesos secundarios, y puede ejecutar comandos del sistema u otros programas.
5. url (módulo de procesamiento de URL)
urlEl módulo proporciona herramientas para analizar y formatear URL.
Cómo usar los módulos integrados
Todos los módulos integrados se pueden cargar directamente mediante larequire()función require():
Ejemplo
Notas:
- Los nombres de los módulos no necesitan incluir una ruta
- Los nombres de los módulos distinguen entre mayúsculas y minúsculas
- No requieren instalación, vienen incluidos en Node.js
- Diferentes versiones de Node.js pueden incluir diferentes módulos integrados
Ventajas de los módulos integrados
- Alto rendimiento: integración estrecha con el tiempo de ejecución de Node.js
- Estabilidad: probados rigurosamente, alta fiabilidad
- Sin necesidad de instalación: listos para usar
- Multiplataforma: comportamiento consistente en diferentes sistemas operativos
- Documentación completa: documentación oficial detallada