Introducción a Node.js
Node.js es un entorno de ejecución de JavaScript de código abierto y multiplataforma. ¡Es una herramienta popular para casi cualquier tipo de proyecto!
Node.js ejecuta el motor JavaScript V8, el núcleo de Google Chrome, fuera del navegador. Esto permite que Node.js tenga un rendimiento muy alto.
Una aplicación Node.js se ejecuta en un solo proceso, sin crear un nuevo hilo para cada solicitud. Node.js proporciona un conjunto de primitivas de E/S asincrónicas en su biblioteca estándar que evitan que el código JavaScript se bloquee y, en general, las bibliotecas en Node.js están escritas utilizando paradigmas no bloqueantes, haciendo que el comportamiento de bloqueo sea la excepción más que la norma.
Cuando Node.js realiza una operación de E/S, como leer desde la red, acceder a una base de datos o al sistema de archivos, en lugar de bloquear el hilo y desperdiciar ciclos de CPU esperando, Node.js reanudará las operaciones cuando llegue la respuesta.
Esto permite a Node.js manejar miles de conexiones concurrentes con un solo servidor sin introducir la carga de gestionar la concurrencia de hilos, lo que podría ser una fuente significativa de errores.
Node.js tiene una ventaja única porque millones de desarrolladores frontend que escriben JavaScript para el navegador ahora pueden escribir el código del lado del servidor además del código del lado del cliente sin necesidad de aprender un lenguaje completamente diferente.
En Node.js se pueden utilizar sin problemas los nuevos estándares ECMAScript, ya que no hay que esperar a que todos los usuarios actualicen sus navegadores; usted se encarga de decidir qué versión de ECMAScript utilizar cambiando la versión de Node.js, y también puede habilitar funciones experimentales específicas ejecutando Node.js con indicadores.
Una aplicación Node.js de ejemplo
El ejemplo más común de "Hola Mundo" de Node.js es un servidor web:
import { createServer } from 'node:http'
const hostname = '127.0.0.1'
const port = 3000
const server = createServer((req, res) => {
res.statusCode = 200
res.setHeader('Content-Type', 'text/plain')
res.end('Hello World')
})
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`)
})
Para ejecutar este fragmento, guárdelo como un archivo server.js
y ejecute node server.js
en su terminal. Si utiliza la versión mjs del código, debe guardarlo como un archivo server.mjs
y ejecutar node server.mjs
en su terminal.
Este código primero incluye el módulo http de Node.js.
Node.js tiene una fantástica biblioteca estándar, incluyendo soporte de primera clase para redes.
El método createServer()
de http
crea un nuevo servidor HTTP y lo devuelve.
El servidor está configurado para escuchar en el puerto y el nombre de host especificados. Cuando el servidor está listo, se llama a la función de devolución de llamada, en este caso informándonos de que el servidor se está ejecutando.
Cada vez que se recibe una nueva solicitud, se llama al evento request, proporcionando dos objetos: una solicitud (un objeto http.IncomingMessage
) y una respuesta (un objeto http.ServerResponse
).
Esos 2 objetos son esenciales para manejar la llamada HTTP.
El primero proporciona los detalles de la solicitud. En este sencillo ejemplo, no se utiliza, pero podría acceder a los encabezados de la solicitud y a los datos de la solicitud.
El segundo se utiliza para devolver datos al llamador.
En este caso con:
res.setHeader('Content-Type', 'text/plain')
establecemos la propiedad statusCode en 200, para indicar una respuesta exitosa.
Establecemos el encabezado Content-Type:
res.setHeader('Content-Type', 'text/plain')
y cerramos la respuesta, añadiendo el contenido como argumento a end()
:
res.end('Hello World')
Esto enviará la respuesta al cliente.