Saltar al contenido principal

Node.js

Node.js es un entorno de ejecución para JavaScript construido sobre el motor V8 (V8 engine) de Google, que es un motor de JavaScript de alto rendimiento desarrollado originalmente para el navegador Chrome. Se utiliza principalmente para el desarrollo del lado del servidor (backend), lo que permite a los desarrolladores ejecutar código JavaScript fuera del navegador. Node.js ha ganado popularidad por su capacidad de manejar aplicaciones altamente escalables y por permitir un enfoque unificado en el desarrollo full-stack, donde el mismo lenguaje, JavaScript, se utiliza tanto en el frontend como en el backend.

Node.js fue creado por Ryan Dahl en 2009 con el objetivo de proporcionar una forma eficiente de manejar aplicaciones que requieren una alta cantidad de operaciones de entrada y salida (I/O), como los servidores web y los sistemas de chat. La idea clave detrás de Node.js era utilizar un solo hilo para manejar miles de conexiones simultáneas sin bloquear el procesamiento, lo cual es diferente a otros modelos de servidor que usan un hilo por cada conexión.

Motor V8

El motor V8 (V8 JavaScript Engine) es la pieza fundamental que permite a Node.js ejecutar código JavaScript con un alto rendimiento. Originalmente creado para Google Chrome, V8 está escrito en C++ y es capaz de convertir el código JavaScript en código máquina directamente. Esto significa que el código se ejecuta de manera muy eficiente, lo cual es crucial para aplicaciones con requisitos de rendimiento altos.

Además, Node.js está construido con una arquitectura basada en eventos y un bucle de eventos (event loop) para gestionar tareas asíncronas. Gracias a este enfoque, Node.js puede gestionar un gran número de solicitudes al mismo tiempo utilizando una cantidad mínima de recursos.

V8 no solo compila JavaScript rápidamente, sino que también optimiza el código en tiempo de ejecución mediante técnicas como la recopilación just-in-time (JIT). Esta eficiencia es una de las razones por las que Node.js es capaz de manejar grandes volúmenes de solicitudes en servidores.

Event-driven, non-blocking I/O

Node.js emplea un modelo de I/O orientado a eventos (event-driven) y no bloqueante (non-blocking I/O), lo que significa que puede manejar operaciones de lectura y escritura sin detener el flujo de ejecución del programa. Cuando una operación de I/O es solicitada (como leer desde un archivo o realizar una consulta a una base de datos), Node.js registra la tarea y luego sigue procesando otras solicitudes mientras la operación I/O ocurre en segundo plano. Cuando se completa, se dispara un evento que indica que la tarea está lista y el código correspondiente se ejecuta.

Este enfoque evita el uso intensivo de recursos y permite manejar miles de conexiones concurrentes de manera eficiente. Este diseño es ideal para aplicaciones en tiempo real, como servidores web, chat en vivo o streaming multimedia, donde el rendimiento es esencial.

Instalación de Node.js

Instalación nativa

La forma más sencilla de instalar Node.js es hacerlo de manera nativa en tu sistema operativo. Puedes descargar el instalador adecuado para tu sistema desde la página oficial de Node.js. Durante la instalación también se instalará automáticamente Node Package Manager (NPM), un módulo que te permitirá gestionar paquetes y dependencias. Esta opción es recomendable si solo necesitas una versión de Node.js y no necesitas cambiar frecuentemente entre versiones.

Instalación utilizando Docker

Otra forma conveniente de utilizar Node.js es mediante Docker. Docker te permite crear un contenedor que tenga Node.js instalado, lo cual es ideal si quieres mantener tu entorno de desarrollo limpio o si trabajas con múltiples proyectos que requieren configuraciones diferentes.

Para usar Node.js con Docker, puedes crear un archivo Dockerfile con el siguiente contenido:

FROM node:latest
WORKDIR /app
COPY . .
RUN npm install
CMD ["node", "app.js"]

Luego, puedes construir y ejecutar el contenedor con los siguientes comandos:

docker build -t my-node-app .
docker run -p 3000:3000 my-node-app

Esta opción es ideal si quieres un entorno aislado y replicable para tu proyecto.

Instalación utilizando nvm

Un paquete para instalar y gestionar diferentes versiones de Node.js es Node Version Manager. Node Version Manager (nvm) permite instalar múltiples versiones de Node.js y cambiar entre ellas fácilmente. Esto es útil si tienes proyectos que requieren diferentes versiones de Node.js, lo cual ocurre frecuentemente cuando trabajas con librerías y dependencias que tienen compatibilidad limitada.

Para instalar nvm en sistemas Unix/Linux y macOS, puedes ejecutar el siguiente comando en la terminal:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

Una vez instalado, puedes verificar si nvm está disponible con:

command -v nvm

Para instalar Node.js utilizando nvm:

nvm install node  # Instala la última versión estable
nvm install 14 # Instala una versión específica, como la 14

Y para cambiar entre versiones:

nvm use 14

Si queremos evitar la terminal, existe un proyecto llamado Node Version Manager Desktop, que nos permite gestionar las versiones utilizando una interfaz gráfica.

Verificación de la instalación

Después de instalar Node.js, es importante verificar que la instalación fue exitosa. Para ello, puedes utilizar los siguientes comandos en la terminal:

node -v

Este comando muestra la versión de Node.js que está instalada. Asimismo, npm, el gestor de paquetes que acompaña a Node.js, también debe estar instalado:

npm -v

npm se utiliza para instalar módulos y paquetes necesarios para los proyectos Node.js. Comprobar la versión de npm asegura que todo esté configurado correctamente.