# Node.js

> Una forma de correr JavaScript en servidores y computadoras, fuera del navegador.

- Nivel: Intermedio
- Temas: Software
- URL: https://tidbit.legios.com.ar/es/nodejs/
- En inglés: [Node.js](https://tidbit.legios.com.ar/nodejs/)

En sus primeros años, JavaScript vivía solo adentro de los navegadores. **Node.js**, que Ryan Dahl lanzó en 2009, agarró el motor de JavaScript de Google Chrome, llamado V8, y lo empaquetó para que pudiera correr en cualquier computadora, con acceso a archivos, a la red y a todo lo que necesita un servidor. De golpe, el mismo lenguaje servía para el frontend y para el backend.

Node.js está armado alrededor de un **event loop** (bucle de eventos). En vez de quedarse esperando una tarea lenta, como leer un archivo o consultar una base de datos, la arranca, sigue con otra cosa y vuelve cuando llega el resultado. Por eso un solo proceso de Node.js se las arregla bien con muchas conexiones a la vez, ideal para APIs, apps de chat y herramientas en tiempo real. Lo que no le sienta es hacer cuentas pesadas, porque bloquean el bucle para todos.

Node.js además trajo **npm**, el gestor de paquetes y registro donde los desarrolladores comparten código listo para usar. Hoy casi todas las herramientas de la web corren sobre Node.js, incluso en equipos cuyos servidores usan otro lenguaje: herramientas de build, test runners y frameworks como Next.js se instalan y se ejecutan con él.

## Una analogía

Un mozo que atiende muchas mesas a la vez. Toma el pedido, lo pasa a la cocina y va a la mesa siguiente en vez de quedarse parado al lado de la hornalla; cuando el plato está listo, lo lleva.

## Para quedarse

- Node.js corre JavaScript fuera del navegador, con el motor V8 de Chrome.
- Su event loop maneja muchas conexiones sin quedarse esperando cada una.
- npm, su registro de paquetes, es donde viven la mayoría de las bibliotecas de JavaScript.
- Rinde mejor cuando el trabajo es sobre todo esperar a la red y al disco, no hacer cálculos pesados.

## Para seguir leyendo

- [Node.js (sitio oficial)](https://nodejs.org/es/)
- [Introducción a Express/Node (MDN)](https://developer.mozilla.org/es/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Introduction)
- [Node.js en Wikipedia](https://es.wikipedia.org/wiki/Node.js)

## Términos relacionados

- [JavaScript](https://tidbit.legios.com.ar/es/javascript/): El lenguaje de programación que corre en las páginas web y las vuelve interactivas.
- [Navegador web](https://tidbit.legios.com.ar/es/web-browser/): La app que trae páginas web desde internet y las dibuja en tu pantalla.
- [Google](https://tidbit.legios.com.ar/es/google/): La empresa del buscador, que regala casi todo y gana plata con publicidad.
- [Servidor](https://tidbit.legios.com.ar/es/server/): Una computadora cuyo trabajo es responder pedidos de otras computadoras, todo el día.
- [Frontend y backend](https://tidbit.legios.com.ar/es/frontend-and-backend/): La parte de una app que ves y tocás, y la parte que trabaja detrás.
- [Base de datos](https://tidbit.legios.com.ar/es/database/): Un depósito ordenado de datos que los programas consultan y actualizan sin riesgo.
- [API](https://tidbit.legios.com.ar/es/api/): El menú de cosas que un programa le deja pedir a otro programa.
- [Biblioteca de software](https://tidbit.legios.com.ar/es/software-library/): Código ya hecho para una tarea común que se enchufa dentro de otros programas.
