Transición Drone FPV con IA: creá un efecto de vuelo entre dos tomas
Ver ebookNode.js desde cero: qué es, para qué sirve y por qué domina el backend moderno

Francisco Rhaiel
AI Growth Engineer
Programación y Desarrollo Web
Node.js desde cero: qué es, para qué sirve y por qué domina el backend moderno
Publicado el
Node.js es un entorno que permite ejecutar JavaScript fuera del navegador, en el servidor. Esa idea aparentemente simple cambió cómo se construye software web: hoy sostiene APIs, aplicaciones en tiempo real y microservicios en empresas de todos los tamaños. Acá va qué es, cómo funciona por dentro, para qué conviene usarlo y cómo escribir tu primer servidor.
Qué es Node.js exactamente
JavaScript nació para correr dentro del navegador. Node.js tomó el motor V8 —el mismo que usa Chrome para interpretar JavaScript— y lo empaquetó con las capacidades que hacen falta fuera del navegador: acceso al sistema de archivos, red, procesos y bases de datos.
La consecuencia práctica es enorme: un mismo lenguaje sirve para el frontend y el backend. Un equipo puede compartir código de validación, tipos y utilidades entre las dos capas, y una persona puede trabajar en toda la aplicación sin cambiar de lenguaje. Esa es la razón principal por la que Node.js se volvió el punto de entrada más común al desarrollo backend, y por la que aparece consistentemente entre las tecnologías más usadas en la encuesta anual a desarrolladores de Stack Overflow. La documentación oficial de Node.js es la referencia para todo lo que tenga que ver con módulos nativos.
Vale aclarar qué no es: Node.js no es un lenguaje ni un framework. Es un entorno de ejecución. El lenguaje sigue siendo JavaScript, y encima de Node se usan frameworks como Express, Fastify o NestJS.
El event loop: el concepto que explica todo lo demás
Node.js funciona con un modelo distinto al de la mayoría de los entornos tradicionales, y entenderlo es lo que separa a quien usa Node de quien lo comprende.
El modelo tradicional asigna un hilo de ejecución por cada solicitud entrante. Si llegan mil solicitudes simultáneas, se abren mil hilos. Cada hilo consume memoria y el sistema operativo gasta recursos alternando entre ellos.
El modelo de Node.js usa un único hilo principal que nunca se queda esperando. Cuando el código pide algo que tarda —una consulta a la base de datos, la lectura de un archivo, una llamada a otra API— Node delega esa operación al sistema y sigue atendiendo otras solicitudes. Cuando el resultado está listo, se encola una función de callback y el hilo principal la ejecuta.
Ese ciclo de "delegar, seguir, retomar cuando esté listo" es el event loop. La consecuencia práctica: Node maneja miles de conexiones simultáneas con muy poca memoria, siempre que esas conexiones estén dominadas por espera de entrada y salida y no por cálculo intensivo.
Y ahí aparece la contracara: si una función bloquea el hilo principal con un cálculo pesado, toda la aplicación se congela. No hay otro hilo que atienda mientras tanto. Por eso Node brilla en aplicaciones con mucha entrada/salida y es una mala elección para procesamiento numérico intensivo, donde conviene delegar a otro servicio o usar hilos de trabajo.
La evolución de la asincronía
Trabajar con operaciones asíncronas pasó por tres etapas que todavía se encuentran en código real:
Callbacks: el modelo original. Funciones que se pasan como argumento y se ejecutan al terminar la operación. Anidar varios genera el famoso "callback hell", difícil de leer y de depurar.
Promesas: un objeto que representa un valor futuro. Permite encadenar operaciones de forma lineal y manejar errores en un solo lugar.
Async/await: azúcar sintáctico sobre promesas que hace que el código asíncrono se lea como si fuera secuencial. Es el estándar actual y lo que deberías aprender primero.
Un detalle que se pasa por alto seguido: cuando tenés varias operaciones asíncronas independientes, esperarlas de a una las ejecuta en serie y multiplica el tiempo total. Lanzarlas en paralelo y esperarlas juntas puede reducir la latencia drásticamente. Es una de las optimizaciones más simples y de mayor impacto en una API.
Tu primer servidor, paso a paso
Instalá Node.js desde el sitio oficial, eligiendo la versión LTS. Verificá la instalación consultando la versión desde la terminal.
Creá el proyecto: una carpeta nueva e inicializá el archivo de configuración del paquete. Ese archivo declara dependencias, scripts y metadatos del proyecto.
Instalá Express, el framework más difundido para construir servidores web con Node.
Escribí el servidor: importás Express, creás la aplicación, definís una ruta que responda a una solicitud GET devolviendo un objeto JSON y ponés el servidor a escuchar en un puerto.
Ejecutalo desde la terminal y abrí la dirección en el navegador. Ya tenés una API funcionando.
Desde ahí, el camino natural es: agregar más rutas, conectar una base de datos, separar la lógica en capas (rutas, controladores, servicios), sumar validación de datos de entrada y manejo centralizado de errores.
El ecosistema: npm y las dependencias
npm es el gestor de paquetes de Node y el repositorio de librerías más grande que existe. Instalar una funcionalidad suele ser cuestión de un comando. Esa abundancia es una ventaja y un riesgo, así que conviene adoptar tres hábitos desde el principio:
Revisá antes de instalar: mantenimiento activo, cantidad de descargas, issues abiertos y tamaño del paquete.
Auditá vulnerabilidades periódicamente con la herramienta integrada de npm. Las dependencias transitivas son una superficie de ataque real.
Versioná el archivo de bloqueo en el repositorio, para que todos los entornos instalen exactamente las mismas versiones.
Para qué se usa Node.js en la práctica
APIs REST y GraphQL: el caso más común. Node es rápido de desarrollar y eficiente para servir muchas solicitudes concurrentes.
Aplicaciones en tiempo real: chats, notificaciones en vivo, dashboards que se actualizan solos, edición colaborativa. El modelo de eventos encaja naturalmente con WebSockets.
Microservicios: servicios chicos, de arranque rápido y bajo consumo de memoria, ideales para contenedores.
Herramientas de línea de comandos: buena parte del tooling del ecosistema frontend está escrito en Node.
Backend para aplicaciones móviles: una sola API que sirve a la web y a las apps nativas.
Intermediarios y capas de agregación: servicios que consultan varias APIs y combinan la respuesta, un caso donde la concurrencia de Node rinde especialmente bien.
Node.js frente a otras opciones de backend
Criterio | Node.js | Python (Django/FastAPI) | Java (Spring) | PHP (Laravel) |
|---|---|---|---|---|
Concurrencia con mucha E/S | Excelente | Buena | Buena | Media |
Cálculo intensivo | Débil | Buena | Excelente | Media |
Velocidad de desarrollo | Alta | Muy alta | Media | Alta |
Ecosistema de librerías | Enorme | Enorme | Maduro | Amplio |
Mismo lenguaje que el frontend | Sí | No | No | No |
La elección rara vez es técnica en estado puro: pesa qué sabe el equipo, qué hay en el mercado laboral y qué integraciones necesitás. Para un desarrollador que viene del frontend, Node es el camino de menor resistencia hacia el backend, y es la razón por la que aparece tanto en las rutas de aprendizaje full stack. Si estás definiendo por dónde arrancar, en esta nota sobre los perfiles tech más demandados por las empresas hay datos sobre qué stack se busca más.
Buenas prácticas desde el primer proyecto
Variables de entorno para la configuración. Nunca credenciales dentro del código ni en el repositorio.
Manejo centralizado de errores. Un middleware que capture excepciones y devuelva respuestas consistentes.
Validación de toda entrada. Todo lo que llega del cliente es sospechoso hasta que se valide.
Logs estructurados. En producción, un log sin formato es casi inútil para diagnosticar.
No bloquear el hilo principal. Cálculos pesados van a hilos de trabajo o a una cola de tareas.
Pruebas automatizadas desde el inicio. Con una API, escribir pruebas de los endpoints principales cuesta poco y ahorra mucho.
Cursos recomendados de Coderhouse
Nivel inicial — Curso de Desarrollo Web: HTML, CSS y JavaScript, la base indispensable antes de pasar al servidor.
Nivel intermedio — Carrera de Desarrollo Backend: servidores, APIs, bases de datos y despliegue.
Recorrido completo — Carrera de Desarrollo Full Stack: frontend y backend integrados, con proyectos que funcionan como portafolio.
Para el despliegue — Curso de DevOps y Cloud: contenedores, integración continua y puesta en producción.
Preguntas frecuentes
¿Node.js es un lenguaje de programación?
No. Es un entorno de ejecución que permite correr JavaScript fuera del navegador. El lenguaje sigue siendo JavaScript, y sobre Node se usan frameworks como Express o NestJS para estructurar aplicaciones.
¿Cuánto tiempo lleva aprender Node.js?
Con JavaScript ya manejado, entre cuatro y ocho semanas alcanzan para construir una API completa con base de datos, autenticación y despliegue. Si venís de cero, primero necesitás dos o tres meses de JavaScript y fundamentos de programación.
¿Sirve para proyectos grandes o solo para prototipos?
Se usa en producción a gran escala en empresas de streaming, comercio electrónico y servicios financieros. La clave está en la arquitectura: separación en capas, tipado con TypeScript, pruebas y observabilidad. Node no impone estructura, así que la disciplina la tiene que poner el equipo.
¿Hay que aprender TypeScript?
En proyectos profesionales, prácticamente sí. TypeScript agrega tipado estático sobre JavaScript y reduce muchísimo los errores en tiempo de ejecución en bases de código grandes. Conviene aprender JavaScript sólido primero y sumar TypeScript cuando ya construiste un par de proyectos.
¿Node.js o Python para empezar en backend?
Si venís del frontend o querés desarrollo web, Node aprovecha lo que ya sabés y acorta el camino. Si tu interés está en datos, automatización o machine learning, Python es la mejor puerta de entrada. Ambos tienen demanda laboral sostenida; lo peor que podés hacer es alternar entre los dos sin terminar ninguno.

Sobre el autor
Soy Francisco Rhaiel, AI Growth Engineer en Coderhouse. Mi día a día consiste en automatizar y optimizar procesos aplicando lo último en inteligencia artificial, incluyendo Agentic AI y Gen AI. Soy graduado de la Universidad Torcuato Di Tella (UTDT) en Tecnología Digital, y mi recorrido me llevó a especializarme en la intersección entre tecnología, datos y negocio. Me mueve aprender, construir y aplicar tecnologías innovadoras para resolver problemas reales. Para profundizar en mi trayectoria, te espero en mi perfil de LinkedIn.
