Glosario de Node.js de la A a la Z

Glosario de Node.js — 115 definiciones

.on() / .emit()
on(evento, callback): registrar un oyente. emit(evento, datos): disparar el evento (todos sus oyentes se llaman con los datos).
.once() / .off()
once(): escuchar un evento una sola vez (desuscripción automática). off()/removeListener(): dejar de escuchar un evento.
.pipe()
Conecta un stream de lectura a un stream de escritura: los datos fluyen automáticamente de uno a otro, fragmento a fragmento, con gestión del caudal.
«Funciona en mi máquina»
El problema que resuelve Docker: una aplicación depende de su entorno y puede fallar en otro; el contenedor empaqueta su entorno y funciona siempre igual.
Adopción progresiva
TS se aprende por etapas (tipado ligero y luego avanzado); como superconjunto de JS, tu dominio de JavaScript se reutiliza — añades los tipos por encima.
API + front separado (SPA)
Alternativa moderna: Node expone una API REST (JSON) consumida por un front separado (React/Vue/Angular) que gestiona la visualización en el navegador.
API REST
Estilo de arquitectura de API web: exponer recursos (URL claras) manipulados mediante la semántica HTTP, respuestas en JSON con códigos de estado adecuados.
async/await
Sintaxis moderna (azúcar sobre Promises): `await` espera el resultado de una operación asíncrona sin bloquear; el código asíncrono se lee como síncrono. Errores con try/catch.
Asíncrono no bloqueante
Modelo donde las operaciones lentas (archivos, red, base) no bloquean el programa: Node registra una retrollamada y sigue haciendo otra cosa mientras espera.
Asíncrono vs síncrono (fs)
Lo asíncrono (no bloqueante) es preferible en servidor para no bloquear el bucle de eventos; lo síncrono (Sync) se reserva para scripts/configuración al arrancar.
Autenticación vs autorización
Autenticación: QUIÉN es el usuario (401 si no está autenticado). Autorización: si TIENE DERECHO a realizar esa acción (403 si no está autorizado).
Base de datos / persistencia
Sistema que guarda los datos de forma duradera (usuarios, productos…). Dos familias: NoSQL (MongoDB) y SQL/relacional (sección 3-4).
Beneficios de Docker
Reproducibilidad (idéntico en todas partes), aislamiento (sin conflictos), portabilidad (cualquier host Docker), facilidad de despliegue, onboarding rápido (docker compose up).
Beneficios de TypeScript
Errores detectados en compilación, autocompletado/herramientas superiores, documentación implícita (los tipos describen), robustez y mantenibilidad en proyectos grandes.
Beneficios de los tests
Confianza (el código hace lo que debe), no regresión (detectar lo que rompe un cambio), documentación (comportamiento esperado), mejor diseño (código testeable = mejor estructurado).
Buenas prácticas REST
URL coherentes en plural, métodos/códigos de estado correctos, gestión de errores limpia, paginación, versionado (/api/v1/), respuesta JSON estructurada.
Bucle de eventos (event loop)
Mecanismo central que orquesta la ejecución: lanza operaciones lentas en segundo plano y retrollama a las funciones cuando llegan los resultados.
Buffer
Zona de memoria bruta de bytes para manipular datos binarios (archivos, red) que JavaScript no tiene de forma nativa; los streams transportan a menudo Buffers.
Callback
Función pasada como argumento, llamada cuando termina una operación asíncrona. Convención Node «error-first»: primer argumento = error (null si OK), luego el resultado.
Callback hell
Anidamiento ilegible de callbacks al encadenar operaciones asíncronas dependientes; problema que resuelven las Promises y async/await.
Lo que simplifica Express
El servidor nativo gestiona todo a mano (enrutamiento con if, parsing del cuerpo, cabeceras); Express aporta enrutamiento, parsing, middlewares — pero se apoya en el módulo http.
Ruta de módulo
Local: empieza por ./ o ../ (archivos del proyecto). Nombre solo: módulo nativo (fs) o paquete npm de node_modules (express).
CI/CD (GitHub Actions)
Automatizar el camino código → producción: CI (en cada push, testear/verificar), CD (desplegar automáticamente si las verificaciones pasan). GitHub Actions crea estos pipelines.
Clustering
Lanzar varias instancias de la aplicación (una por núcleo, vía módulo cluster o PM2) que se reparten las peticiones; aprovecha todos los núcleos (Node es mono-hilo).
CommonJS (CJS)
Sistema de módulos histórico de Node: exportar con `module.exports`, importar con `require()`. Síncrono, simple, omnipresente en el ecosistema npm.
Compilación (tsc) / tsconfig
TS no se ejecuta directamente: el compilador (tsc) verifica y transforma los .ts en .js. Configurado vía tsconfig.json; ts-node ejecuta TS directamente en dev.
console.log()
Función para mostrar en la terminal (equivalente a «print»); herramienta básica para ver valores, depurar y trazar la ejecución.
const / let (vs var)
const: constante no reasignable (preferir). let: variable reasignable. Ambas de ámbito de bloque. `var` debe evitarse (ámbito confuso).
CRUD
Las cuatro operaciones básicas: Create (crear), Read (leer), Update (actualizar), Delete (eliminar); en Mongoose, métodos asíncronos (await).
dependencies vs devDependencies / node_modules
dependencies: necesarias en producción. devDependencies: útiles solo en dev (-D). node_modules: carpeta de paquetes instalados (no versionada, regenerable).
Despliegue
Hacer que la aplicación se ejecute en un servidor accesible en Internet (en lugar de localhost); mediante una plataforma PaaS (simple) o un VPS/cloud (más control y responsabilidades).
Desestructuración
Extracción de valores de objetos/arrays en una línea: `const { nombre } = obj;` o `const [a, b] = arr;`. Omnipresente (imports, datos).
Docker / contenedorización
Herramienta que empaqueta una aplicación CON todo su entorno (Node, dependencias, config) en un contenedor aislado y portable, que se ejecuta de forma idéntica en todas partes.
Docker Compose
Archivo docker-compose.yml que define varios contenedores (app Node + base + caché…) y sus relaciones, lanzados juntos (docker compose up); describe toda la pila.
emit / on / broadcast
emit(evento, dato): enviar. on(evento, callback): recibir. El servidor emite hacia un cliente, hacia TODOS (io.emit, broadcast) o hacia grupos (rooms).
Errores esperados vs inesperados
Esperados: recurso no encontrado (404), validación fallida (400) — gestionados explícitamente. Inesperados: bugs (500). Además: gestionar errores async (try/catch alrededor de los await).
error-first / try-catch
Gestión de errores: error como primer argumento de callbacks; .catch() para Promises; try/catch alrededor de los await.
ES Modules (ESM)
Sistema de módulos estándar del lenguaje: exportar con `export`, importar con `import`. La dirección del futuro; activado vía .mjs o "type":"module" en package.json.
Esenciales de producción
Variables de entorno (config + secretos, nunca en el código/Git), HTTPS (cifrado), logs y monitorización (vigilar), entornos separados (dev/staging/prod).
Evento error
Evento especial: un emisor que emite 'error' sin oyente hace fallar el programa — siempre escuchar los errores.
EventEmitter
Clase nativa (módulo events) en el corazón del modelo dirigido por eventos de Node; muchos objetos nativos (servidor HTTP, streams…) heredan de ella.
Ejecutar un archivo
La forma principal de trabajar: escribir tu código en un archivo .js y lanzarlo con `node archivo.js` (Node ejecuta todo el archivo).
Express
Framework web de referencia para Node (minimalista, flexible), construido sobre el módulo http; simplifica enrutamiento, parsing y gestión de peticiones. Base de la mayoría de apps Node.
express.Router()
Herramienta que agrupa rutas por recurso en archivos separados (router users, products…) montados en la app; organiza una API que crece.
Archivos estáticos
Recursos fijos servidos al navegador (CSS, imágenes, JS del cliente, fuentes); servidos simplemente con el middleware express.static('public').
Función flecha (arrow)
Sintaxis concisa `(a) => ...` para escribir funciones, muy usada para callbacks; sin `this` propio (evita trampas).
fs (file system)
Módulo de lectura/escritura de archivos y carpetas; funciones en versión asíncrona (preferible, fs.promises + await) o síncrona (Sync, bloqueante).
Gestión de errores centralizada
Middleware Express especial (err, req, res, next) colocado al final, que recibe los errores y devuelve una respuesta coherente (código correcto, mensaje claro, sin fuga de detalles sensibles).
Globales Node vs navegador
Node NO tiene window/document/DOM (no hay página web); ofrece process, __dirname, __filename, global y acceso al sistema.
Hash de contraseñas (bcrypt)
Nunca se almacena una contraseña en claro, sino su hash unidireccional (bcrypt, con salt, deliberadamente lento). Al iniciar sesión, se compara sin descifrar.
http (módulo nativo)
Módulo que permite crear un servidor web sin dependencia: http.createServer() con una función llamada en cada petición, luego .listen(puerto).
Intensivo en I/O vs intensivo en CPU
Node destaca para tareas de entrada/salida (servidores, API, tiempo real); es menos adecuado para cálculos pesados prolongados (mono-hilo).
Imagen / Dockerfile / contenedor
Imagen: plantilla congelada de la app + entorno, definida por un Dockerfile (receta de construcción). Contenedor: instancia en ejecución de una imagen.
Inyección SQL
Fallo crítico: NUNCA concatenar datos de usuario en una consulta SQL; usar consultas parametrizadas (los ORM protegen automáticamente).
JWT (JSON Web Token)
Token firmado criptográficamente emitido tras el login, reenviado por el cliente en cada petición (cabecera Authorization) y verificado por el servidor; sin estado, popular para API.
LTS vs Current
LTS (Long Term Support, versiones pares): estable y mantenida largo tiempo, preferible. Current (impar): más reciente pero menos estable, para probar novedades.
map / filter / reduce
Métodos modernos de arrays para transformar, filtrar y agregar colecciones de forma funcional; la forma moderna de procesar datos.
Métodos y códigos HTTP
Métodos: GET (leer), POST (crear), PUT/PATCH (modificar), DELETE (eliminar). Códigos: 200 OK, 201 Created, 400/401/404 (errores cliente), 500 (error servidor).
Middleware
Función (req, res, next) que se ejecuta durante el procesamiento de una petición; puede inspeccionar/modificar, ejecutar código y luego next() para pasar al siguiente. EL concepto clave de Express.
Caché (Redis)
Almacenar en memoria (o en Redis) los resultados costosos (consultas frecuentes, cálculos) para no rehacerlos; a menudo la palanca de rendimiento más impactante.
Módulo
Archivo separado con una responsabilidad, que exporta lo que pone a disposición e importa lo que necesita; base de la organización del código.
Módulos nativos (built-in)
Bibliotecas integradas en Node (sin instalación) que dan acceso al sistema: fs, path, os, http, crypto, events, stream… Importadas por su nombre.
MongoDB (NoSQL orientado a documentos)
Base que almacena DOCUMENTOS (estructuras tipo JSON/BSON) agrupados en COLECCIONES, sin esquema rígido; cercana a los objetos JS, popular con Node.
Mongoose (ODM)
Object Document Mapper que añade una capa práctica sobre MongoDB: esquemas (estructura + validación), modelos (métodos de manipulación).
Motor de plantillas (vistas)
Herramienta que genera HTML dinámico a partir de plantillas (HTML + lógica: variables, bucles, condiciones) y datos; EJS, Handlebars, Pug…
Motor V8
Motor JavaScript de Google Chrome (escrito en C++) que compila y ejecuta JS muy rápido; el corazón de Node.js.
MVC / separación de responsabilidades
Modelos (datos), Controladores (lógica de procesamiento), Rutas (URL que delegan a controladores); separa las preocupaciones para un código mantenible y evolutivo.
Node + npm
La instalación de Node trae el ejecutable Node (que lanza tus scripts) Y npm (el gestor de paquetes), instalados juntos.
Node.js
Entorno de ejecución que permite ejecutar JavaScript fuera del navegador (lado servidor), basado en el motor V8 más una biblioteca de acceso al sistema.
npm y el registro
Gestor de paquetes de Node, que da acceso al mayor registro open source del mundo (cientos de miles de bibliotecas reutilizables).
nvm (Node Version Manager)
Herramienta que permite instalar varias versiones de Node y cambiar entre ellas; valiosa cuando los proyectos exigen versiones distintas.
ORM (Prisma, Sequelize)
Object-Relational Mapper que hace corresponder tablas y objetos JS y genera el SQL; manipulación de objetos/métodos en lugar de SQL crudo (legible, seguro, productivo).
os
Módulo de acceso a información del sistema: plataforma, procesadores (os.cpus), memoria, carpetas estándar (homedir, tmpdir).
PaaS (Render, Railway…)
Plataformas que simplifican el despliegue: conectas tu repo Git, ellas construyen, lanzan, gestionan servidor/HTTPS/escalado; nivel gratuito habitual. Ideales para empezar.
package-lock.json
Archivo que bloquea las versiones EXACTAS instaladas; garantiza que todos instalen las mismas versiones (reproducibilidad).
package.json
Manifiesto del proyecto: nombre, versión, dependencias, scripts, metadatos. Creado con `npm init`; punto de referencia de todo proyecto Node.
path
Módulo de manipulación portable de rutas (path.join, resolve, basename, extname…): gestiona diferencias de separador entre sistemas (/ vs \).
Pipeline de middlewares
Cadena de funciones que atraviesa cada petición; enrutamiento, parsing (express.json), auth, gestión de errores son todos middlewares (app.use o por ruta).
Prisma (moderno)
ORM apreciado: esquema declarativo (schema.prisma), migraciones (versionar el esquema), cliente generado y TIPADO (autocompletado, seguridad de tipos — excelente con TypeScript).
process
Objeto global de Node que da acceso al proceso: argumentos (process.argv), variables de entorno (process.env), salida (process.exit()).
Perfilado / medir antes de optimizar
Identificar los verdaderos cuellos de botella midiendo antes de optimizar (regla de oro); evitar optimizar a ciegas o prematuramente.
Programación dirigida por eventos
Modelo donde los objetos emiten eventos y otras partes del código reaccionan escuchando; desacoplamiento por el nombre del evento.
Promise
Objeto que representa un valor futuro (resultado de una operación asíncrona). Tres estados: pending, fulfilled (éxito), rejected (error). Gestionado vía .then() y .catch().
Cuándo usar streams
En cuanto se procesan grandes volúmenes (archivos grandes, subidas/descargas, flujos de red); para archivos pequeños, readFile clásico basta.
REPL
Entorno interactivo que se abre escribiendo `node` solo: lee/evalúa/imprime JavaScript línea a línea. Ideal para experimentar sin crear archivo.
req (request)
Objeto de la petición entrante: método (req.method: GET/POST…), ruta (req.url), cabeceras (req.headers) y cuerpo (leído como stream para POST).
req / res enriquecidos
req: req.params (ruta), req.query (query string), req.body (cuerpo). res: res.json(data), res.status(201).json(...), res.send, res.redirect.
require vs import
require() (CommonJS) e import (ESM) son las dos sintaxis de importación; hay que entender ambas porque coexisten en el código real.
res (response)
Objeto de construcción de la respuesta: estado (res.statusCode), cabeceras (res.setHeader), cuerpo (res.write/res.end).
res.render()
Método Express que renderiza una vista: res.render('página', { datos }) genera el HTML inyectando los datos en la plantilla (carpeta views/).
Recursos y métodos HTTP
GET /users (listar), GET /users/:id (leer uno), POST /users (crear), PUT/PATCH /users/:id (modificar), DELETE /users/:id (eliminar) — convenciones coherentes.
Rooms
Grupos de clientes (una sala de chat, una partida) hacia los que se difunde de forma selectiva; organizan la comunicación en tiempo real.
Enrutamiento
Asociación de URL + método HTTP a handlers: app.get('/users', ...), app.post(...), etc. Parámetros de ruta dinámicos: '/users/:id' → req.params.id.
Escalado horizontal / load balancer
Repartir la carga entre varios servidores/instancias detrás de un balanceador de carga; para servir a muchísimos usuarios (favorece apps stateless).
Esquema y modelo
El esquema define la estructura de los documentos (tipos, validaciones: required, unique, valores por defecto); el modelo, creado desde el esquema, ofrece los métodos de manipulación.
Seguridad transversal
Helmet (cabeceras de seguridad), HTTPS, secretos en variables de entorno (nunca en el código), rate limiting, validación — y «nunca confiar en las entradas».
semver y scripts npm
Versionado MAYOR.MENOR.PARCHE (^ / ~ controlan las actualizaciones aceptadas). Los scripts npm definen comandos reutilizables (npm run <nombre>).
Sesión vs JWT
Sesión: estado en el servidor + cookie de identificador. JWT: token autoportante sin almacenamiento en servidor. Dos formas de mantener la autenticación (HTTP es sin estado).
Socket.IO
Biblioteca de referencia para el tiempo real en Node: dirigida por eventos (emit/on), con reconexión automática, fallbacks, rooms y namespaces.
SQL (lenguaje)
Structured Query Language: SELECT (leer), INSERT (crear), UPDATE (modificar), DELETE (eliminar), JOIN (combinar tablas relacionadas).
SQL / relacional
Bases que organizan los datos en tablas (columnas tipadas), filas y relaciones vía claves foráneas; PostgreSQL, MySQL. Garantías fuertes (esquema estricto, transacciones ACID).
SSR (Server-Side Rendering)
El servidor genera el HTML completo y lo envía al navegador; enfoque de los sitios clásicos (contenido, SEO).
Stream (flujo)
Procesamiento de datos por fragmentos (chunks), a medida que llegan, en lugar de cargar todo en memoria; eficiente para grandes volúmenes (memoria y tiempo).
Template literal
Cadena con acentos graves que permite insertar variables: `Hola ${nombre}` — más limpio que la concatenación con +.
Tiempo real
Situaciones donde el servidor envía datos al cliente sin que este los pida, al instante (chat, notificaciones, datos en vivo, juegos); no encaja en el modelo petición-respuesta HTTP.
Terminal / PATH
Consola donde se lanzan node y npm; `node -v` y `npm -v` verifican la instalación (si responden, Node está en el PATH).
Tests automatizados (Jest)
Código que prueba tu código: unitarios (una función aislada), de integración (varias partes/una ruta con su base), end-to-end. Jest es el framework popular.
Tipado estático vs dinámico
Estático (TS): tipos declarados y verificados ANTES de la ejecución (en compilación) — detecta errores pronto. Dinámico (JS): tipos verificados solo en ejecución (flexible pero fuente de bugs en runtime).
Tipos de streams
Readable (lectura), Writable (escritura), Duplex (ambos, ej. socket), Transform (transforma al pasar: compresión, cifrado).
TypeScript
Superconjunto de JavaScript que añade tipado estático (todo JS válido es TS válido); se compila a JavaScript ordinario que ejecuta Node.
Validación de entradas
Verificar que los datos recibidos de un cliente tienen el formato esperado (campos requeridos, tipos, restricciones) ANTES de procesarlos; rechazar con 400 si no son válidos. Bibliotecas: Zod, Joi.
VPS
Servidor virtual alquilado que administras tú mismo (Node, config, seguridad, PM2, Nginx, HTTPS); más control y flexibilidad, pero más responsabilidades.
VS Code
Editor estándar para Node/JavaScript: gratuito, soporte JS integrado, terminal integrado, extensiones (ESLint, Prettier) para calidad y formato de código.
WebSocket
Protocolo que establece una conexión PERSISTENTE y BIDIRECCIONAL: permanece abierta, y cliente y servidor se envían mensajes en cualquier momento, en ambos sentidos.
Worker threads
Hilos separados para ejecutar tareas intensivas en CPU (cálculos pesados) sin bloquear el hilo principal / bucle de eventos.