Node.js y el Event Loop
Node.js permite ejecutar JavaScript fuera del navegador, directamente en tu computadora o servidor. Fue creado en 2009 por Ryan Dahl y cambió completamente el desarrollo web: por primera vez podías usar el mismo lenguaje tanto en el frontend como en el backend.
A diferencia de lenguajes como PHP o Java que crean un nuevo hilo por cada petición, Node usa un solo hilo con un modelo non-blocking I/O. Esto significa que mientras espera una respuesta de base de datos o del sistema de archivos, puede atender otras peticiones en paralelo, haciéndolo extremadamente eficiente para apps con muchas conexiones simultáneas como chats, APIs o dashboards en tiempo real.
El Event Loop es el mecanismo central que hace posible esta asincronía. Funciona como un director de orquesta: revisa continuamente si hay tareas pendientes (timers que expiraron, respuestas de I/O que llegaron) y las ejecuta. libuv es la librería escrita en C++ que implementa este loop y permite a Node interactuar con el sistema operativo sin bloquear.
// CommonJS (require) — formato tradicional de Node.js
const fs = require('fs');
const path = require('path');
// process.env accede a variables de entorno
const PORT = process.env.PORT || 3000;
const NODE_ENV = process.env.NODE_ENV || 'development';
console.log(`Ambiente: ${NODE_ENV}, Puerto: ${PORT}`);
// Demo del event loop — orden de ejecución
console.log('1 - Sincrónico');
setTimeout(() => console.log('3 - setTimeout (macro-task)'), 0);
Promise.resolve().then(() => console.log('2 - Promise (micro-task)'));
setImmediate(() => console.log('4 - setImmediate'));
// Output: 1, 2, 3, 4
// Las micro-tasks (Promises) van ANTES que los macro-tasks (setTimeout)
Practica esta lección
Resuelve los ejercicios del curso de Node.js y Express en la app, gratis y con corrección automática.
Empezar a practicar