1 of 45

Introducción a Node JS

CÁTEDRA: ESTRATEGIAS DE PERSISTENCIA

2 of 45

Frontend / Backend

3 of 45

Frontend / Backend

Frontend Interacción con el usuario

Backend Lógica de negocio consumida por el frontend

4 of 45

¿Qué es Node.js?

5 of 45

¿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.

6 of 45

Instalación y Configuración

7 of 45

Prerrequisitos

Node.js y npm: Verificar instalación con node -v y npm -v.

8 of 45

Descarga de Node.js

Ir al sitio oficial de Node.js:

nodejs.org

Versiones disponibles:

  • LTS (Long Term Support): Recomendada para la mayoría de los usuarios ya que es más estable.
  • Current: Contiene las últimas características y actualizaciones, pero puede tener más cambios en versiones futuras.

9 of 45

¿Que es npm (Node Package Manager)?

10 of 45

¿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.

11 of 45

¿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.

12 of 45

Características Principales de npm

Gestión de Paquetes:

  • Instalación de Paquetes: npm permite a los desarrolladores descargar e instalar librerías y frameworks fácilmente con un simple comando en la terminal.
  • Actualización de Paquetes: npm también facilita la actualización de los paquetes a sus versiones más recientes o a una versión específica.
  • Desinstalación de Paquetes: npm permite eliminar paquetes que ya no se necesitan en un proyecto.

13 of 45

Características Principales de npm

Archivo package.json:

  • Propósito: Este archivo es un componente clave en cualquier proyecto de Node.js. Al utilizar npm, se genera un archivo package.json que contiene la información sobre el proyecto, las dependencias necesarias, scripts de comandos personalizados y otra configuración.
  • Dependencias: En package.json, se listan todas las dependencias del proyecto con sus versiones específicas, lo que garantiza que el proyecto sea consistente en diferentes entornos.

14 of 45

Características Principales de npm

Repositorio de Paquetes:

  • Registro Central: npm utiliza un repositorio en línea (también llamado registro o registry) que alberga miles de paquetes de JavaScript desarrollados por la comunidad de desarrolladores. Este registro es accesible a través del sitio web npmjs.com.
  • Publicación de Paquetes: npm permite a los desarrolladores publicar sus propios paquetes en el registro, facilitando el compartir y colaborar en código abierto.

15 of 45

Características Principales de npm

Scripts de npm:

  • Automatización de Tareas: npm permite la ejecución de scripts personalizados definidos en package.json. Esto se usa para automatizar tareas comunes, como ejecutar pruebas, iniciar un servidor de desarrollo, o construir una aplicación.

16 of 45

Crear proyecto en Node.js

17 of 45

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.

18 of 45

Proyecto Node.js

19 of 45

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.

20 of 45

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

21 of 45

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"

},

22 of 45

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.

23 of 45

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

24 of 45

¿Qué es el archivo package.json?

25 of 45

¿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.

26 of 45

¿Para qué se utiliza package.json?

  • Información del Proyecto:
  • Nombre y Versión: Describe el nombre de tu proyecto y su versión actual. Esto es útil para identificar el proyecto y gestionar sus versiones durante el desarrollo y despliegue.
  • Descripción: Una breve descripción del proyecto, que ayuda a entender de qué se trata a simple vista.

27 of 45

¿Para qué se utiliza package.json?

  • Dependencias:
  • Dependencias: Lista de todas las bibliotecas y paquetes que tu proyecto necesita para funcionar. Cuando alguien clona tu proyecto, puede instalar todas las dependencias necesarias con un solo comando (npm install).
  • Dependencias de desarrollo: Son paquetes necesarios solo durante el desarrollo (como herramientas de prueba o compilación) y no para el funcionamiento de la aplicación en producción.

28 of 45

¿Para qué se utiliza package.json?

  • Scripts:
  • Scripts de npm: Comandos que puedes ejecutar para automatizar tareas comunes, como iniciar tu aplicación, ejecutar pruebas o construir el proyecto. Por ejemplo, puedes definir un script "start" para iniciar tu aplicación y luego ejecutar npm start en la terminal.

  • Configuración del Punto de Entrada:
  • Main: Especifica el archivo de entrada principal de tu aplicación. Node.js utilizará este archivo cuando alguien importe tu paquete.

29 of 45

¿Para qué se utiliza package.json?

  • Licencia y Autor:
  • Licencia: Informa sobre la licencia bajo la cual está disponible tu proyecto, lo cual es importante si estás compartiendo tu código públicamente.
  • Autor: Información sobre quién desarrolló el proyecto.

30 of 45

¿Por qué es importante package.json?

  • Facilita el manejo del proyecto: Almacena toda la información crucial en un solo lugar, facilitando la instalación de dependencias y la ejecución de comandos.
  • Colaboración y despliegue: Otros desarrolladores o servidores de despliegue pueden clonar tu proyecto y obtener todas las dependencias necesarias automáticamente.
  • Automatización: Permite definir scripts para automatizar tareas repetitivas, mejorando la eficiencia en el desarrollo.

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.

31 of 45

Servidor web

32 of 45

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}`)

33 of 45

Proyecto Node.js

Podemos abrir nuestra sencilla aplicación en el navegador visitando la siguiente dirección:

http://localhost:3000/

34 of 45

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!!!')

})

35 of 45

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!!!".

36 of 45

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}`)

37 of 45

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",

...

}

38 of 45

ES6

Cambiar la primera línea del código de index.js:

const http = require('http')

Por la siguiente:

import http from 'http'

39 of 45

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.

40 of 45

Express

41 of 45

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"

}

42 of 45

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}`)

43 of 45

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()

44 of 45

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>')

})

45 of 45

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.