Presentación_cursoNode
Presentación_cursoNode
Js
Septiembre 2024
Índice.
1. Introducción. 9. Módulos.
2. Instalación. 10. Manejo de paquetes con npm.
3. Variables. 11. Creador de un servidor básico.
4. Tipos de datos. 12. API.
5. Operadores. 1. ¿Qué es?
6. Estructuras de control. 2. Características.
7. Funciones. 3. Peticiones.
Ventajas
Escalable.
Rendimiento y eficacia.
Facilidad.
Open Source.
Comunidad y soporte
Instalación
En primer lugar, vamos a asegurarnos que tengamos instalado Node.js en
nuestros sistemas. Para comprobar si lo tenemos instalado abrimos una
terminal, y escribimos el siguiente comando:
node –v
Una vez instalado Node.js, vamos a crear un programa que lo que hará
será, simplemente, escribir un texto por pantalla. Para ellos vamos a
seguir los siguientes pasos.
1. Vamos a crear un archivo llamado miPrimerPrograma.js
2. En el fichero vamos a añadir la siguiente línea: console.log("Hola Mundo");
3. Abrimos un terminal que apunte al directorio donde hemos guardado nuestro
fichero, y ejecutamos el siguiente comando: node miPrimerPrograma.js
4. Este deberá mostrarnos la frase que hayamos escrito en el comando, en
nuestro caso “Hola Mundo”.
Variables.
En programación, una variable es un contenedor para un valor, como
un número, un texto, un objeto, etc.
Para declarar variables en Node.js podemos hacerlo de 3 formas
diferentes.
Var: tiene un alcance de función, es decir, si declaramos una variable con var
dentro de una función, podremos acceder a ella desde cualquier lugar dentro
de esa función. Por lo tanto, puede ser reasignable.
Let: tiene un alcance de bloque, es decir, si declaramos una variable con let
dentro de un bloque, como if o for, sólo podremos acceder a esta variable
dentro de ese bloque.
Const: se utiliza para declarar una variable cuyo valor no cambiará a lo largo
del programa. Por lo tanto, no puede ser reasignada.
var x = 2;
let y = 5;
const z = 9;
Variables. Ejemplo
3. Programa que muestra el nombre del dia de la semana correspondiente a un número ingresado por el
usuario (1 para lunes, 2 para martes, etc.)
...
}
Funciones
Vamos a ver algunos de los puntos clave para explicar qué es una
función en Node.js.
1. Definición: Una función se define utilizando la palabra clave ‘function’,
seguida por un nombre opcional y paréntesis que pueden contener los
parámetros que la función aceptará:
1. Reutilización de código: Las funciones permiten escribir una vez y reutilizar muchas
veces el código que realiza una tarea específica. Esto promueve la modularidad y la
eficiencia en el desarrollo de aplicaciones.
2. Abstracción: Las funciones permiten abstraer el detalle de cómo se realiza una tarea,
lo que facilita la comprensión del código y hace que sea más mantenible.
3. Encapsulamiento: Las funciones encapsulan un conjunto de operaciones
relacionadas, lo que significa que el resto del programa no necesita conocer los
detalles internos de cómo se implementa la funcionalidad.
4. Ámbito de variables: Las funciones en JavaScript, incluyendo Node.js, tienen su
propio ámbito de variables. Esto significa que las variables definidas dentro de una
función no son accesibles desde fuera de ella, a menos que se devuelvan
explícitamente o se pasen como argumentos.
5. Funciones de orden superior: En JavaScript, las funciones son de primera clase, lo
que significa que pueden ser asignadas a variables, pasadas como argumentos a otras
funciones y devueltas como valores de otras funciones. Esto permite construir patrones
de diseño avanzados y escribir código más flexible y expresivo.
Funciones
Tipos de funciones en Node.js
Funciones async: Para utilizar async/await, primero debemos definir una función con la palabra clave async. Esto indica que la
función contendrá código asincrónico y que la ejecución de la función será pausada hasta que todas las operaciones asincrónicas
dentro de ella se completen.
Await: La palabra clave await se utiliza dentro de una función async para esperar la resolución de una promesa. Cuando se
encuentra await, la ejecución de la función se pausa hasta que la promesa se resuelva y se devuelve su valor resuelto.
Asincronía.
Async/Await.
Manejo de errores: Al igual
que con las promesas, podemos
usar un bloque try...catch para
manejar errores al utilizar
async/await en Node.js. Esto
simplifica el manejo de errores
en comparación con el uso de
callbacks o el encadenamiento
de promesas.
Asincronía.
Async/Await.
Encadenamiento: Al igual que
con las promesas, podemos
encadenar múltiples
operaciones asincrónicas
utilizando async/await en
Node.js, lo que resulta en un
código más limpio y fácil de
entender.
Asincronía.
Ejercicios.
1. Vamos a simular un máquina de Café.
2. Vamos a simular el login en una aplicación.
3. Supongamos que tienes un directorio con varios archivos de texto y quieres leer el contenido de cada uno de ellos de
forma asíncrona. Para ello, puedes escribir un programa en Node.js que utilice async/await para leer el contenido de
cada archivo y mostrarlo por consola.
4. Promesas: Escribe una función que simule la obtención de datos de un servidor remoto utilizando una promesa. La
función debe resolver la promesa con algún dato después de un tiempo determinado (por ejemplo, 2 segundos).
5. Callbacks: Escribe una función que lea el contenido de un archivo de texto y llame a un callback con el contenido del
archivo como argumento. Utiliza el módulo fs de Node.js para realizar la lectura.
6. Async/await: Escribe una función asíncrona que lea el contenido de un archivo de texto utilizando async/await. Utiliza
el módulo fs.promises de Node.js para realizar la lectura.
7. Promesas con múltiples llamadas: Escribe una función que utilice promesas para realizar múltiples llamadas a una
API REST para obtener información sobre usuarios. Las llamadas deben ser concurrentes y se deben resolver todas
las promesas al mismo tiempo. Luego, muestra la información de los usuarios por consola.
8. Callbacks en serie: Escribe una función que utilice callbacks para realizar varias operaciones de forma secuencial. Por
ejemplo, lee el contenido de un archivo, realiza alguna manipulación y luego escribe el resultado en otro archivo.
9. Async/await con manejo de errores: Escribe una función asíncrona que utilice async/await para realizar operaciones
con un temporizador. Captura cualquier error que pueda ocurrir durante la ejecución.
Módulos en Node.js.
];
Módulos.
Ejercicios.
6. Crear un sistema de gestión de usuarios que permita registrar nuevos usuarios y mostrar detalles de
usuarios existentes. El sistema debe implementarse utilizando módulos en Node.js para organizar la lógica
de la aplicación de manera adecuada. El sistema debe tener las siguientes funcionalidades:
Registro de usuarios:
Debe permitir agregar nuevos usuarios al sistema con los siguientes datos: nombre, correo electrónico y contraseña.
Cada usuario debe tener un nombre único en el sistema.
Al registrar un nuevo usuario, el sistema debe almacenar sus datos para futuras consultas.
Consulta de usuarios:
Debe permitir buscar usuarios por su correo electrónico y mostrar sus detalles, incluyendo nombre y correo electrónico.
Si el usuario buscado no existe en el sistema, debe mostrar un mensaje indicando que el usuario no fue encontrado.
Node.js es muy utilizado para crear servidores web. Vamos a crear un servidor web
básico que lo que hará será responder con “Hola mundo” a todas las solicitudes.
Crear un archivo llamado “servidor.js” y escribiremos el siguiente código:
const http = require('http’);
const servidor = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hola mundo.');
});
servidor.listen(3000, () => {
console.log('El servidor está escuchando en el puerto 3000...');
});
GET: Se utiliza para obtener información o recursos del servidor. Es como hacer una "lectura" de datos. Imagina que es como
pedir una página web, donde recibes la información que solicitaste.
POST: Se utiliza para enviar datos nuevos al servidor y crear un recurso. Es como llenar un formulario y enviarlo para que se
registre la información en la base de datos del servidor.
PUT: Se utiliza para actualizar o modificar recursos existentes en el servidor. Imagina que es como editar una publicación o
cambiar información que ya existe.
DELETE: Se utiliza para eliminar recursos del servidor. Es como "borrar" algo de la base de datos o eliminar una publicación.
API.
API REST. Códigos de Respuesta.
200 OK: Indica que la solicitud fue exitosa y el servidor pudo devolver la respuesta solicitada. Es el código de
respuesta más común para una solicitud exitosa.
201 Created: Se utiliza para indicar que la solicitud ha sido exitosa y que el servidor ha creado un nuevo recurso
como resultado de la operación. Por ejemplo, cuando se crea un nuevo registro en una base de datos.
204 No Content: Indica que la solicitud se ha procesado correctamente, pero no hay contenido para devolver. Es
comúnmente utilizado para respuestas a peticiones de borrado o actualización donde no es necesario enviar datos
adicionales.
400 Bad Request: Se produce cuando el servidor no pudo entender la solicitud debido a un error del cliente, como
sintaxis incorrecta o datos inválidos en la solicitud.
401 Unauthorized: Indica que el cliente debe autenticarse para obtener la respuesta solicitada. Es decir, el cliente
no tiene permisos para acceder a la información sin proveer credenciales válidas.
403 Forbidden: Similar al código 401, pero en este caso, el servidor sabe quién es el cliente, pero el cliente no tiene
permisos suficientes para acceder al recurso solicitado.
404 Not Found: Indica que el servidor no pudo encontrar el recurso solicitado. Es un código comúnmente visto
cuando se intenta acceder a una URL o recurso inexistente.
500 Internal Server Error: Es un código de error genérico que indica que ha ocurrido un error interno en el servidor
y no se puede procesar la solicitud del cliente correctamente.
503 Service Unavailable: Indica que el servidor no está listo para manejar la solicitud. Puede deberse a una
sobrecarga temporal o mantenimiento del servidor.
API.
API REST. Códigos de Respuesta.
Creación de un servidor web avanzado.
Apis útiles
https://pokeapi.co/
https://opentdb.com/api_config.php
EJERCICIO FINAL 1.
Crear un servidor utilizando Node.js y Express que funcione como un sistema de gestión de una biblioteca. El
servidor debe proporcionar diferentes endpoints para dar de alta, sacar, editar y listar libros de la biblioteca.
Requisitos:
Endpoint para dar de alta un libro:
Debe permitir enviar una solicitud POST al endpoint /libros con los datos del libro (título, autor, año de publicación,
género, etc.).
El servidor debe guardar el nuevo libro en una estructura de datos adecuada.
Endpoint para sacar un libro:
Debe permitir enviar una solicitud DELETE al endpoint /libros/:id para sacar un libro de la biblioteca, especificando su ID
en la URL.
El servidor debe eliminar el libro correspondiente de la estructura de datos.
Endpoint para editar un libro:
Debe permitir enviar una solicitud PUT al endpoint /libros/:id para editar los detalles de un libro existente, especificando
su ID en la URL.
El servidor debe actualizar los datos del libro correspondiente en la estructura de datos.
Endpoint para listar los libros:
Debe permitir enviar una solicitud GET al endpoint /libros para obtener una lista de todos los libros de la biblioteca.
El servidor debe devolver una respuesta con los detalles de todos los libros almacenados.
Consideraciones adicionales:
Utiliza Express para crear el servidor y manejar las rutas.
Utiliza una estructura de datos adecuada para almacenar los libros, por ejemplo, un array de objetos.
Puedes simular la persistencia de datos utilizando una estructura de datos en memoria por ahora, aunque en un
entorno de producción deberías considerar utilizar una base de datos.
Utiliza JSON para el intercambio de datos entre el cliente y el servidor.
EJERCICIO FINAL 2.