Introducción a Node JS
CÁTEDRA: ESTRATEGIAS DE PERSISTENCIA
Frontend / Backend
Frontend / Backend
Frontend Interacción con el usuario
Backend Lógica de negocio consumida por el frontend�
¿Qué es Node.js?
¿Qué es Node.js?
Node.js es un entorno de ejecución de JavaScript del lado del servidor que permite a los desarrolladores ejecutar código JavaScript fuera de un navegador web.
Node.js se basa en el motor V8 de JavaScript de Google Chrome, que convierte código JavaScript en código máquina, lo que hace que Node.js sea muy rápido y eficiente.
Instalación y Configuración
Prerrequisitos
Node.js y npm: Verificar instalación con node -v y npm -v.
Descarga de Node.js
Ir al sitio oficial de Node.js:
Versiones disponibles:
¿Que es npm (Node Package Manager)?
¿Que es npm (Node Package Manager)?
npm es el gestor de paquetes predeterminado para Node.js.
Es una herramienta esencial para los desarrolladores que trabajan con Node.js, ya que facilita la instalación, actualización, y gestión de paquetes y módulos de JavaScript.
Se instala automáticamente con Node.js.
¿Que es npm (Node Package Manager)?
Hoy en día, prácticamente todos los proyectos de JavaScript se definen utilizando el administrador de paquetes de node, también conocido como npm.
Los proyectos creados con Vite también siguen el formato npm. Un indicador claro de que un proyecto usa npm es el archivo package.json ubicado en la raíz del proyecto.
Características Principales de npm
Gestión de Paquetes:
Características Principales de npm
Archivo package.json:
Características Principales de npm
Repositorio de Paquetes:
Características Principales de npm
Scripts de npm:
Crear proyecto en Node.js
Proyecto Node.js
Vamos a dirigirnos a un directorio adecuado y crear una nueva estructura para nuestra aplicación utilizando el comando npm init.
A medida que avanzamos, responderemos a las preguntas que nos presente, y como resultado, se generará automáticamente un archivo package.json en la raíz del proyecto, que contendrá información importante sobre nuestro proyecto.
Proyecto Node.js
Proyecto Node.js
El archivo define, por ejemplo, que el punto de entrada de la aplicación es el archivo index.js.
El punto de entrada de la aplicación se refiere al archivo principal que se ejecuta cuando se inicia la aplicación.
Este archivo es el que contiene el código inicial que Node.js ejecutará para arrancar la aplicación y, por lo general, es el encargado de configurar el entorno de la aplicación, inicializar servidores, conectar bases de datos, y orquestar otros módulos y dependencias necesarios para que la aplicación funcione correctamente.
Proyecto Node.js
Ahora, vamos a crear la primera versión de nuestra aplicación añadiendo un archivo llamado index.js en la raíz del proyecto con el siguiente código:
console.log('Hola mundo!!!')
Podemos ejecutar el programa directamente con Node desde la línea de comando:
node index.js
Proyecto Node.js
Realicemos un pequeño cambio en el objeto scripts añadiendo un nuevo comando de script:
"scripts": {
"start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
Proyecto Node.js
Podemos ejecutar el programa como un script npm:
npm start
El script npm start funciona porque lo hemos definido en el archivo package.json.
Aunque el proyecto se ejecuta correctamente al iniciar con node index.js desde la línea de comando, es común que los proyectos npm realicen estas tareas a través de scripts npm.
Proyecto Node.js
Por defecto, el archivo package.json también incluye otro script npm comúnmente utilizado llamado npm test. Como nuestro proyecto aún no cuenta con una librería de testing, el comando npm test simplemente ejecuta el siguiente comando:
echo "Error: no test specified" && exit 1
¿Qué es el archivo package.json?
¿Qué es el archivo package.json?
El archivo package.json es un archivo esencial en cualquier proyecto de Node.js que actúa como una "guía" para tu aplicación o biblioteca.
Este archivo se encuentra en el directorio raíz del proyecto y contiene metadatos importantes sobre el proyecto, como su nombre, versión, dependencias, scripts de ejecución, y otros detalles de configuración.
package.json es un archivo de texto en formato JSON (JavaScript Object Notation) que contiene toda la información necesaria para que npm (Node Package Manager) gestione tu proyecto.
¿Para qué se utiliza package.json?
¿Para qué se utiliza package.json?
¿Para qué se utiliza package.json?
¿Para qué se utiliza package.json?
¿Por qué es importante package.json?
En resumen, package.json es como el "manual de instrucciones" para tu proyecto Node.js, ayudando a administrar y mantener la aplicación de manera eficiente.
Servidor web
Servidor web simple
Modifiquemos la aplicación para convertirla en un servidor web editando el archivo index.js de la siguiente manera:
const http = require('http')
const app = http.createServer((request, response) => {
response.writeHead(200, { 'Content-Type': 'text/plain' })
response.end('Hola mundo!!!')
})
const PORT = 3000
app.listen(PORT)
console.log(`Server running on port ${PORT}`)
Proyecto Node.js
Podemos abrir nuestra sencilla aplicación en el navegador visitando la siguiente dirección:
Proyecto Node.js
Analicemos el siguiente fragmento de código:
const app = http.createServer((request, response) => {
response.writeHead(200, { 'Content-Type': 'text/plain' })
response.end('Hola mundo!!!')
})
Proyecto Node.js
El código utiliza el método createServer del módulo http para crear un nuevo servidor web. Se configura un controlador de eventos en el servidor, el cual se ejecuta cada vez que se realiza una solicitud HTTP a la dirección del servidor http://localhost:3000/
La solicitud se responde con un código de estado 200, una cabecera Content-Type configurada en text/plain y el contenido del sitio establecido como "Hola mundo!!!".
Proyecto Node.js
Las últimas líneas hacen que el servidor HTTP asignado a la variable app escuche las solicitudes HTTP enviadas al puerto 3000:
const PORT = 3000
app.listen(PORT)
console.log(`Server running on port ${PORT}`)
ES6
Forma moderna de utilizar Javascript. Vamos a empezar a utilizar lo que es tipo “módulos”.
Agregar al archivo package.json la siguiente línea:
{
...
"type": "module",
...
}
ES6
Cambiar la primera línea del código de index.js:
const http = require('http')
Por la siguiente:
import http from 'http'
Express
Podemos implementar nuestro código de servidor utilizando el servidor web http integrado en Node.js, pero esta opción puede resultar complicada, especialmente a medida que la aplicación crece.
Para simplificar el desarrollo del lado del servidor con Node.js, se han creado muchas librerías que ofrecen una interfaz más amigable al trabajar con el módulo http integrado.
Estas librerías están diseñadas para proporcionar una mejor abstracción para los casos de uso comunes necesarios al construir un servidor backend. Entre estas librerías, la más popular y ampliamente utilizada es Express.
Express
Express
Para instalar el paquete express usemos el siguiente comando:
npm install express
La dependencia también se agrega a nuestro archivo package.json:
"dependencies": {
"express": "^4.19.2"
}
Servidor web simple (Express)
Modifiquemos la aplicación para convertirla en un servidor web usando express:
const express = require('express')
const app = express()
app.get('/', (req, res) => {
res.send('<h1>Hola mundo!!!</h1>')
})
const PORT = 3000
app.listen(PORT)
console.log(`Server running on port ${PORT}`)
Servidor web simple (Express)
La aplicación no sufrió grandes cambios. Desde el inicio de nuestro código, estamos importando Express, que en esta ocasión es una función utilizada para crear una aplicación Express que se guarda en la variable app:
import express from 'express'
const app = express()
Servidor web simple (Express)
Luego, definimos una ruta para la aplicación. Está establece un controlador de eventos que se encarga de manejar las solicitudes HTTP GET dirigidas a la raíz (/) de la aplicación:
app.get('/', (req, res) => {
res.send('<h1>Hola mundo!!!</h1>')
})
Servidor web simple (Express)
La función del controlador de eventos recibe dos parámetros: el primero, request, contiene toda la información de la solicitud HTTP, mientras que el segundo, response, se utiliza para definir cómo se responde a la solicitud.
En el código, la respuesta a la solicitud se genera utilizando el método send del objeto response. Al llamar a este método, el servidor responde a la solicitud HTTP enviando un string con el contenido <h1>Hello World!</h1>. Como este parámetro es un string, Express configura automáticamente el encabezado Content-Type como text/html. El código de estado de la respuesta, por defecto, es 200.