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 fs = require('fs'); // Módulo de sistema de archivos
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

const fs = require('fs');

// 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 rutas
  • path.resolve()- Resolver a ruta absoluta
  • path.basename()- Obtener nombre de archivo
  • path.extname()- Obtener extensión de archivo

Código de ejemplo:

Ejemplo

const path = require('path');

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 http = require('http');

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

const EventEmitter = require('events');

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

const os = require('os');

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

const moduleName = require('module_name');

Notas:

  1. Los nombres de los módulos no necesitan incluir una ruta
  2. Los nombres de los módulos distinguen entre mayúsculas y minúsculas
  3. No requieren instalación, vienen incluidos en Node.js
  4. Diferentes versiones de Node.js pueden incluir diferentes módulos integrados

Ventajas de los módulos integrados

  1. Alto rendimiento: integración estrecha con el tiempo de ejecución de Node.js
  2. Estabilidad: probados rigurosamente, alta fiabilidad
  3. Sin necesidad de instalación: listos para usar
  4. Multiplataforma: comportamiento consistente en diferentes sistemas operativos
  5. Documentación completa: documentación oficial detallada
Otras extensiones