Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Práctica #11: Node JS y Express: Desarrollo de Aplicaciones
Práctica #11: Node JS y Express: Desarrollo de Aplicaciones
Práctica N° 11:
Node JS y Express
Elaborado por: Fernandez Lopez, Luciana Alexandra
Ordoñez Arratia, Joseph Fernando
Yanarico Suyo, Cinthya Daniela
GRUPO N° 3
Presentado por:
2020700992 FERNANDEZ LOPEZ, LUCIANA ALEXANDRA
2020245441 ORDOÑEZ ARRATIA, JOSEPH FERNANDO
2020231692 YANARICO SUYO, CINTHYA DANIELA
ii
Práctica N° 11: Node JS y Express
RECONOCIMIENTOS
Los autores de este trabajo reconocen con gratitud a los creadores de Node JS y Express
PALABRAS CLAVES
Node JS y Express
iii
Práctica N° 11: Node JS y Express
ÍNDICE
1. RESÚMEN 1
2. INTRODUCCIÓN ...........................................................................................................1
3. MARCO TEÓRICO ........................................................................................................1
3.1 NODE JS ...............................................................................................................1
3.2 EXPRESS .............................................................................................................1
4. EXPERIENCIAS DE PRÁCTICA ...................................................................................2
4.1 Aplicación Básica Node JS ...................................................................................2
4.2 Node JS y MySQL ................................................................................................3
4.3 Node JS y plantillas HTML ...................................................................................4
4.4 Aplicación Básica en Express ..............................................................................6
4.5 Manejo de Rutas en Express ...............................................................................8
4.6 Manejo de Middleware en Express ................................................................... 14
5. EJERCICIOS............................................................................................................... 16
5.1 Ejercicio 1........................................................................................................... 16
5.2 Ejercicio 2........................................................................................................... 18
6. CONCLUSIONES DE LA PRÁCTICA: ....................................................................... 34
7. CUESTIONARIO ......................................................................................................... 35
8. BIBLIOGRAFÍA ........................................................................................................... 36
iv
Práctica N° 11: Node JS y Express
v
Práctica N° 11: Node JS y Express
1. RESÚMEN
En el presente informe se desarrolla el uso de NodeJS y Express, las cuales son herramientas que
deberían conocerse y abordarse al menos en un aspecto básico para poder comprender el lenguaje
de Javascript.
NodeJS es un entorno de ejecución JavaScript en tiempo real, que tiene la finalidad de crear
aplicaciones, sitios web dinámicos y eficientes.
Express es un framework de backend minimalista y rápido, con similitudes a Sinatra y sirve para el
desarrollo de aplicaciones escalables.
Los aprendizajes obtenidos con esta práctica consisten en la creación de aplicaciones básicas
utilizando ExpressJS, utilizando herramientas como enrutamiento, middleware, mysql, html.
Con el desarrollo de esta práctica se concluye que el framework ExpressJS es una herramienta
bastante robusta para la elaboración de aplicaciones web, abriendo una infinidad de posibilidades al
desarrollador.
2. INTRODUCCIÓN
Node.js es un tiempo de ejecución de JavaScript, de ahí su sufijo ".js". Este tiempo de ejecución es
de código abierto o de código abierto, multiplataforma y del lado del servidor.
Los desarrolladores de JavaScript han creado este entorno para llevar este lenguaje de programación
un paso más allá.
Antes de que se creara Node.js en 2009, el lenguaje de programación JavaScript solo podía
ejecutarse en el navegador o en el lado del cliente, pero... ¿Y si quisiéramos usar el lenguaje fuera
del navegador o del servidor?
Debido a que JavaScript solo se podía usar dentro de etiquetas [eliminadas] [eliminadas], los
desarrolladores tenían que usar diferentes lenguajes y herramientas tanto para el frontend como para
el backend.
Node.js incluye todo lo que necesita para ejecutar código JavaScript del lado del servidor. Algo que
facilita mucho el trabajo de los desarrolladores y que actualmente es una de las herramientas más
utilizadas en el desarrollo web.
Express es un marco gratuito y de código abierto para Node.js. Tiene funciones, herramientas,
complementos y paquetes que ayudan a simplificar los procesos de desarrollo. También conocido
como Express, fue creado y publicado por primera vez por TJ Holowaychuk en 2010. Se basa en
los principios y enfoques de Node.js y los utiliza para crear aplicaciones web. Express.js es
importante para el desarrollo de aplicaciones empresariales, especialmente para la automatización
y la integración de tecnología.
1
Práctica N° 11: Node JS y Express
3. MARCO TEÓRICO
3.1 NODE JS
¿Qué es?
Es un entorno de ejecución que trabaja con JavaScript, opera del lado de servidor y a tiempo real,
se encuentra construido sobre el motor de Google JavaScript V8, no almacena los datos en búfer,
cuenta con su propio gestor de paquetes para Node, ofrece la elaboración de aplicaciones escalables
además de simplificar la comunicación trabajando de forma asíncrona.[1]
¿Cuándo se usa?
Se recomienda para la elaboración de aplicaciones que trabajen a tiempo real, en aplicaciones de
transmisión de datos como las de streaming, basadas en JSON:API, de página única y vinculadas a
E/S
¿Cómo se configura y se instala?
Para instalar Node, es necesario descargarlo de su página web oficial https://nodejs.org/en/
recomendando la versión recomendada para la mayoría de los usuarios.
Posteriormente nos dirigimos a ejecutar el instalador.
Para confirmar la instalación correcta de Node en el sistema, deberemos consultar la versión del
Node en la consola mediante el comando: node -v
Ademas podemos consultar el gestor de paquetes NPM que viene incluido con Node mediante el
comando: npm -v
3.2 EXPRESS
¿Qué es?
Es el framework más popular que trabaja con Node js, simplifica la implementación de Node
especialmente en el manejo de rutas, permite el desarrollo de aplicaciones backend escalables,
ofrece herramientas para peticiones y respuestas HTTP y middleware, trabaja siguiendo el principio
de DRY (no repetir).
¿Cuándo se usa?
1
Práctica N° 11: Node JS y Express
Se implementa en aplicaciones de una sola página, consiste en enrutar la aplicación en una sola
pagina de índice, aplicaciones de streaming, ya que manejan muchas capas de datos a tiempo real
que express puede manejar, aplicaciones fintesh, dirigidas al ámbito financiero por el alto nivel de
usuario y transacciones.
¿Cuáles son las ventajas de usarlo?
Presenta las ventajas de ser flexible y rápido, destaca como el mejor entre los framework de Node.js,
tanto como el sistema de enrutamiento y middleware son excelentes. Suele formar parte de stack
reconocidos como MERN y MEAN, puede realizar conexiones a una base de datos fácilmente,
asegura la escalabilidad de la aplicación, es compatible con el motor V8 de Google, indicando lo
potente que es en la construcción y despliegue de las aplicaciones, cuenta con una gran
documentación provista por la comunidad y su característica mas importante es su función como
middleware.[2]
¿Cómo se configura e instala?
Como prerrequisito es necesario tener instalado Node.js. Para instalar Express debemos crear
primeramente una aplicación con Node.js dentro de nuestro editor de código o consola mediante el
comando: npm init, completamos los campos de información que nos pide y se procedera a instalar
express de manera local con el comando npm install express o de forma global con npm install
express –sabe.
4. EXPERIENCIAS DE PRÁCTICA
4.1 Aplicación Básica Node JS
Index.js
2
Práctica N° 11: Node JS y Express
3
Práctica N° 11: Node JS y Express
index.js
-------------------------------------------------------------------------------
//importar paquetes http y fs
var http = require('http'),
fs = require('fs'); //file server
//creacion de plantilla
var html = fs.readFileSync("./index.html");
4
Práctica N° 11: Node JS y Express
}).listen(3010);//puerto 3010
*******************************************************************************
index.html
-------------------------------------------------------------------------------
<!doctype html>
<html lang="en">
<head>
<title>Documento NODE y Bootstrap5</title>
<!-- tags meta -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-
to-fit=no">
</head>
<script
src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js"
integrity="sha384-
oBqDVmMz9ATKxIep9tiCxS/Z9fNfEXiDAYTujMAeBAsjFuCZSmKbSSUnQlmh/jp3"
crossorigin="anonymous">
</script>
<script
src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"
integrity="sha384-
7VPbUDkoPSGFnVtYi0QogXtr74QeVeeIs99Qfg5YCF+TidwNdjvaKZX19NZ/e6oz"
crossorigin="anonymous">
</script>
</body>
</html>
6
Práctica N° 11: Node JS y Express
7
Práctica N° 11: Node JS y Express
8
Práctica N° 11: Node JS y Express
package.json
{
"name": "expressjs",
"version": "1.0.0",
"description": "Experiencia Manejo de Rutas en Express",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Joseph Ordonez",
"license": "ISC",
"dependencies": {
"express": "^4.18.2"
}
}
index.js
// importar paquete Express
var express = require('express');
// Servidor
app.listen(3000,function(){
console.log('Aplicación iniciada en http://localhost:3000');
});
urls.js
// Gestionador de rutas
var express = require('express');
var router = express.Router();
const path = require('path');
// Manejadores de rutas
router.get('/',function(req,res){
res.sendFile(path.join(__dirname+'/index.html'));
});
//Anidamiento de rutas
router.get('/express',function(req,res){
res.sendFile(path.join(__dirname+'/express.html'));
router.get('/express/express2', function(req,res){
res.sendFile(path.join(__dirname+'/express2.html'))
})
})
router.get('/node',function(req,res){
res.sendFile(path.join(__dirname+'/node.html'));
})
router.get('/bootstrap', function(req,res){
res.sendFile(path.join(__dirname+'/bootstrap.html'))
})
module.exports = router;
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link
href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-
iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT"
crossorigin="anonymous">
<title>Inicio</title>
</head>
<body>
10
Práctica N° 11: Node JS y Express
<!--nav bar-->
<nav class="nav justify-content-center ">
<a class="nav-link active" href="./" aria-current="page">Inicio</a>
<a class="nav-link" href="./express">ExpressJS</a>
<a class="nav-link" href="./node">NodeJS</a>
<a class="nav-link" href="./bootstrap">Boostrap 5</a>
</nav>
<!--Contenedor-->
<div class="container"> <!--CREACION DE CONTENEDOR-->
<div class="row">
<div class="col-12">
<br/>
<div class="p-5 mb-4 bg-light rounded-3">
<div class="container-fluid py-5">
<h1 class="display-5 fw-bold">Experiencia 4.5</h1>
<p class="col-md-8 fs-4">En esta experiencia de práctica se
desarrolla el manejo de rutas en ExpressJS</p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
express.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link
href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-
iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT"
crossorigin="anonymous">
<title>Express</title>
</head>
<body>
<!--nav bar-->
<nav class="nav justify-content-center ">
<a class="nav-link active" href="./" aria-current="page">Inicio</a>
<a class="nav-link" href="./express">ExpressJS</a>
<a class="nav-link" href="./node">NodeJS</a>
<a class="nav-link" href="./bootstrap">Boostrap 5</a>
</nav>
<!--Contenedor-->
<div class="container"> <!--CREACION DE CONTENEDOR-->
<div class="row">
<div class="col-12">
<div class="p-5 mb-4 bg-light rounded-3">
<div class="container-fluid py-5">
<h1 class="display-5 fw-bold">Hello World from ExpressJS</h1>
11
Práctica N° 11: Node JS y Express
express2.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link
href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-
iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT"
crossorigin="anonymous">
<title>Express</title>
</head>
<body>
<!--nav bar-->
<nav class="nav justify-content-center ">
<a class="nav-link active" href="./" aria-current="page">Inicio</a>
<a class="nav-link" href="./express">ExpressJS</a>
<a class="nav-link" href="./node">NodeJS</a>
<a class="nav-link" href="./bootstrap">Boostrap 5</a>
</nav>
<!--Contenedor-->
<div class="container"> <!--CREACION DE CONTENEDOR-->
<div class="row">
<div class="col-12">
<div class="p-5 mb-4 bg-light rounded-3">
<div class="container-fluid py-5">
<h1 class="display-5 fw-bold">Hola de nuevo!</h1>
<p class="col-md-8 fs-4">Anidamiento de rutas con
ExpressJS</p>
<button class="btn btn-primary btn-lg" type="button"
href="./express/express2">Conocer más</button>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
12
Práctica N° 11: Node JS y Express
node.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link
href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-
iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT"
crossorigin="anonymous">
<title>Node</title>
</head>
<body>
<!--nav bar-->
<nav class="nav justify-content-center ">
<a class="nav-link active" href="./" aria-current="page">Inicio</a>
<a class="nav-link" href="./express">ExpressJS</a>
<a class="nav-link" href="./node">NodeJS</a>
<a class="nav-link" href="./bootstrap">Boostrap 5</a>
</nav>
<!--Contenedor-->
<div class="container"> <!--CREACION DE CONTENEDOR-->
<div class="row">
<div class="col-12">
<div class="p-5 mb-4 bg-light rounded-3">
<div class="container-fluid py-5">
<h1 class="display-5 fw-bold">NodeJS</h1>
<p class="col-md-8 fs-4">Ideado como un entorno de ejecución
de JavaScript orientado a eventos asíncronos, Node. js está diseñado para crear
aplicaciones network escalables.</p>
<button class="btn btn-primary btn-lg" type="button">Conocer
más</button>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
bootstrap.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link
href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-
iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT"
crossorigin="anonymous">
13
Práctica N° 11: Node JS y Express
<title>Boostratp</title>
</head>
<body>
<!--nav bar-->
<nav class="nav justify-content-center ">
<a class="nav-link active" href="./" aria-current="page">Inicio</a>
<a class="nav-link" href="./express">ExpressJS</a>
<a class="nav-link" href="./node">NodeJS</a>
<a class="nav-link" href="./bootstrap">Boostrap 5</a>
</nav>
<!--Contenedor-->
<div class="container"> <!--CREACION DE CONTENEDOR-->
<div class="row">
<div class="col-12">
<div class="p-5 mb-4 bg-light rounded-3">
<div class="container-fluid py-5">
<h1 class="display-5 fw-bold">Bootstrap 5</h1>
<p class="col-md-8 fs-4">Bootstrap es un framework front-end
utilizado para desarrollar aplicaciones web y sitios mobile first, o sea, con un
layout que se adapta a la pantalla del dispositivo utilizado por el usuario.</p>
<button class="btn btn-primary btn-lg" type="button">Conocer
más</button>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
14
Práctica N° 11: Node JS y Express
Nótese como con cada clic al botón se registrará la hora en la que se pulsó. De este modo podrían
guardarse asistencias, registros de entrada y salida, etc.
package.json
{
"name": "expressmiddleware",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Joseph Ordonez",
"license": "ISC",
"dependencies": {
"express": "^4.18.2",
"moment": "^2.29.4"
}
}
index.js
// importando paquete express
var express = require('express');
var app = express();
// Middlewares
const middleware = function(req,res,next){
const moment = require('moment')
let hora = moment().format('hh:mm:ss')
console.log('Time:', hora);
next();
};
// Invocando middleware
app.use(middleware);
// Manejador de rutas
var rutas = require('./urls.js');
app.use('/',rutas);
// levantando servidor
15
Práctica N° 11: Node JS y Express
app.listen(3000,function(){
console.log('Servidor iniciado en http://localhost:3000');
});
urls.js
var express = require('express');
var router = express.Router();
const path = require('path');
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link
href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-
iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT"
crossorigin="anonymous">
<title>Inicio</title>
</head>
<body>
<div class="p-5 mb-4 bg-light rounded-3">
<div class="container-fluid py-5">
<h1 class="display-5 fw-bold">Registre la hora!</h1>
<p class="col-md-8 fs-4">Registre la hora cuantas veces guste pulsando el
siguiente botón.</p>
<a class="btn btn-primary" href="./" role="button">Registrar Hora</a>
</div>
</div>
</body>
</html>
5. EJERCICIOS
5.1 Ejercicio 1
Node y HTML
index.js
-------------------------------------------------------------------------------
//importar paquetes http y fs
16
Práctica N° 11: Node JS y Express
<head>
<title>Ejercicio Node y Html</title>
<!-- TAGS META -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-
to-fit=no">
</head>
<body>
<!-- background -->
<div class="bg-image" style="
background-image: url('https://esportsjunkie.com/wp-
content/uploads/2022/04/PGL-Major-Antwerp-2022.jpg');
background-size: cover;">
<!-- mask -->
<div class="mask" style="background-color: rgba(0, 0, 0, 0.6);">
<!-- contenedor texto white-->
<div class="container col-xxl-8 py-5 text-light">
<div class="row flex-lg-row-reverse align-items-center g-5 py-
5">
<div class="col-10 col-sm-8 col-lg-6">
<!--imagen height 500, width 700-->
<img
src="https://media.a24.com/p/6f234356b7e2e38935380f5bdb99657b/adjuntos/296/imag
enes/008/996/0008996875/1200x675/smart/majorjpg.jpg" class="d-block mx-lg-auto
img-fluid" width="700"
height="500" loading="lazy">
</div>
<div class="col-lg-6">
<!--imagen height 500, width 700-->
<h1 class="display-5 fw-bold lh-1 mb-3">Responsive left-
aligned hero with image</h1>
<!--parrafo-->
<p class="lead pt-4 pb-4">Congratulations to Cloud9,
FURIA, Fnatic, Heroic, Outsiders, MOUZ,
17
Práctica N° 11: Node JS y Express
</div>
</div>
<!--script de bootstrap-->
<script
src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js"
integrity="sha384-
oBqDVmMz9ATKxIep9tiCxS/Z9fNfEXiDAYTujMAeBAsjFuCZSmKbSSUnQlmh/jp3"
crossorigin="anonymous">
</script>
<script
src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"
integrity="sha384-
7VPbUDkoPSGFnVtYi0QogXtr74QeVeeIs99Qfg5YCF+TidwNdjvaKZX19NZ/e6oz"
crossorigin="anonymous">
</script>
</body>
</html>
*******************************************************************************
5.2 Ejercicio 2
18
Práctica N° 11: Node JS y Express
Packaje.json
-------------------------------------------------------------------------------
//archivo json con express,con index.js como main
{
"name": "express",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "Cinthya", //autor
"license": "ISC",
"dependencies": {
"express": "^4.18.2"
}
}
*******************************************************************************
Index.js
-------------------------------------------------------------------------------
//modulo path
const path = require('path');
//importar el paquete Express
var express = require('express');
//crear aplicacion express
var app = express();
//creando manejadores de rutas
app.get('/', function(req, res){
res.sendFile(path.resolve(__dirname, 'index.html')); //archivo html
})
app.get('/novedades', function(req, res){
res.sendFile(path.resolve(__dirname, 'novedades.html')); //archivo html
})
app.get('/embajadores', function(req, res){
res.sendFile(path.resolve(__dirname, 'embajadores.html')); //archivo html
})
<head>
<title>Express con HTML</title>
<!-- tags Meta-->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-
to-fit=no">
19
Práctica N° 11: Node JS y Express
<link
href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-
iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT"
crossorigin="anonymous">
</head>
<body>
<!-- Contenedor-->
<div class="container my-5">
<!-- Fondo-->
<div class="bg-image" style="background-image:
url('https://wallpapercave.com/wp/wp11326368.jpg');
height: 100%; width: 100%; background-size: cover;">
<!-- opacidad fondo -->
<div class="mask" style="background-color: rgba(0, 0, 0, 0.6);">
<!-- division -->
<div class="row p-4 pb-0 pe-lg-2 pt-lg-5 align-items-center rounded-
3 border shadow-lg">
<!-- Contenido-->
<div class="col-lg-7 p-3 p-lg-5 pt-lg-3 text-light">
<h1 class="display-4 fw-bold lh-1">JUEGA LA FIFA WORLD CUP
2022™</h1>
<p class="lead">Vive la experiencia de jugar en el mejor
escenario futbolístico con EA SPORTS™ FIFA 23 a partir del 9 de noviembre.</p>
<div class="d-grid gap-2 d-md-flex justify-content-md-start
mb-4 mb-lg-3">
<!-- botones -->
<button type="button" class="btn btn-light btn-lg px-4
me-md-2 fw-bold">Comprar ahora</button>
<button type="button" class="btn btn-outline-light btn-
lg px-4">Más información</button>
</div>
</div>
<!-- imagen 2 -->
<div class="col-lg-4 offset-lg-1 p-0 overflow-hidden shadow-lg
">
<img class="rounded-lg-2"
src="https://wallpapercave.com/wp/wp11326332.jpg" alt="" width="720" >
</div>
</div>
</div>
</div>
</div>
<!-- script -->
<script
src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js"
integrity="sha384-
oBqDVmMz9ATKxIep9tiCxS/Z9fNfEXiDAYTujMAeBAsjFuCZSmKbSSUnQlmh/jp3"
crossorigin="anonymous">
</script>
<script
src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"
integrity="sha384-
7VPbUDkoPSGFnVtYi0QogXtr74QeVeeIs99Qfg5YCF+TidwNdjvaKZX19NZ/e6oz"
crossorigin="anonymous">
</script>
20
Práctica N° 11: Node JS y Express
</body>
</html>
*******************************************************************************
Novedades.html
-------------------------------------------------------------------------------
<!doctype html>
<html lang="en">
<head>
<title>Novedades FIFA 23</title>
<!-- tags Meta-->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-
fit=no">
</head>
<body>
<!-- Contenedor -->
<div class="container py-4">
</div>
<!-- Fin subdivision 2.2 -->
</div>
<!-- Fin division 2-->
<!-- Footer -->
<footer class="pt-3 mt-4 text-muted border-top">
© 2022 Electronic Arts Inc.
</footer>
</div>
<!-- Scripts -->
<script
src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js"
integrity="sha384-
oBqDVmMz9ATKxIep9tiCxS/Z9fNfEXiDAYTujMAeBAsjFuCZSmKbSSUnQlmh/jp3"
crossorigin="anonymous">
</script>
<script
src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"
integrity="sha384-
7VPbUDkoPSGFnVtYi0QogXtr74QeVeeIs99Qfg5YCF+TidwNdjvaKZX19NZ/e6oz"
crossorigin="anonymous">
</script>
</body>
</html>
*******************************************************************************
Embajadores.html
-------------------------------------------------------------------------------
<!doctype html>
<html lang="en">
<head>
<title>Embajadores</title>
<!-- Tags Meta -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-
fit=no">
</head>
<body>
<!-- cabecera -->
<section class="text-center container">
<div class="row py-lg-5">
<div class="col-lg-6 col-md-8 mx-auto">
<h1 class="fw-light">Embajadores</h1>
</div>
</div>
</section>
<!-- division -->
<div class="album py-2">
23
Práctica N° 11: Node JS y Express
</div>
</div>
<!-- card 2-->
<div class="col">
<div class="card shadow-sm">
<!-- card image-->
<div class="container p-0 mb-4" width="299" height="225" >
<img
src="https://media.contentapi.ea.com/content/dam/ea/fifa/fifa-
23/common/athletes-and-ambassadors/f23-ambassadors-son-min-heung-
16x9.jpg.adapt.crop16x9.652w.jpg" class="img-fluid" alt="..." width="100%"
height="225">
</div>
<!-- card body-->
<div class="card-body">
<h4>HEUNG-MIN SON</h4>
<p class="card-text">Son elevandose de héroe de culto del
club e icono de su seleccién nacional a ganador de la Bota de Oro de la Premier
League.</p>
</div>
</div>
</div>
<!-- card 3-->
<div class="col">
<div class="card shadow-sm">
<!-- card image-->
<div class="container p-0 mb-4" width="299" height="225" >
<img
src="https://media.contentapi.ea.com/content/dam/ea/fifa/fifa-
23/common/athletes-and-ambassadors/f23-ambassadors-catarina-macario-
16x9.jpg.adapt.crop16x9.652w.jpg" class="img-fluid" alt="..." width="100%"
height="225">
</div>
<!-- card body-->
<div class="card-body">
<h4>CATARINA MACARIO</h4>
<p class="card-text">Macario este año tendrá su mirada
puesta en conseguir la tercera FIFA
24
Práctica N° 11: Node JS y Express
</div>
</div>
</div>
<!-- card 5-->
<div class="col">
<div class="card shadow-sm">
<!-- card image-->
<div class="container p-0 mb-4" width="299" height="225" >
<img
src="https://media.contentapi.ea.com/content/dam/ea/fifa/fifa-
23/common/athletes-and-ambassadors/f23-ambassadors-jude-bellingham-
16x9.jpg.adapt.crop16x9.652w.jpg" class="img-fluid" alt="..." width="100%"
height="225">
</div>
<!-- card body-->
<div class="card-body">
<h4>JUDE BELLINGHAM</h4>
<p class="card-text">Con solo 19 años, es uno de los
jugadores mas jóvenes en ser incluidos en el Equipo de la Temporada de la
Bundesliga.</p>
</div>
</div>
</div>
<!-- card 6-->
<div class="col">
<div class="card shadow-sm">
<!-- card image-->
<div class="container p-0 mb-4" width="299" height="225" >
<img
src="https://media.contentapi.ea.com/content/dam/ea/fifa/fifa-
23/common/athletes-and-ambassadors/f23-ambassadors-virgil-van-dijk-
16x9.jpg.adapt.crop16x9.652w.jpg" class="img-fluid" alt="..." width="100%"
height="225">
</div>
<!-- card body-->
<div class="card-body">
<h4>VIRGIL VAN DUK</h4>
25
Práctica N° 11: Node JS y Express
<!-- Script-->
<script
src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js"
integrity="sha384-
oBqDVmMz9ATKxIep9tiCxS/Z9fNfEXiDAYTujMAeBAsjFuCZSmKbSSUnQlmh/jp3"
crossorigin="anonymous">
</script>
<script
src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"
integrity="sha384-
7VPbUDkoPSGFnVtYi0QogXtr74QeVeeIs99Qfg5YCF+TidwNdjvaKZX19NZ/e6oz"
crossorigin="anonymous">
</script>
</body>
</html>
*******************************************************************************
26
Práctica N° 11: Node JS y Express
Express y rutas
27
Práctica N° 11: Node JS y Express
package.json
{
"name": "ejercicio1",
"version": "1.0.0",
"description": "Ejercicio Express y Rutas",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Joseph Ordonez",
"license": "ISC",
"dependencies": {
"express": "^4.18.2"
}
}
index.js
// importar paquete Express
var express = require('express');
const path = require('path');
// Servidor
app.listen(3000,function(){
console.log('Aplicación iniciada en http://localhost:3000');
});
urls.js
// Gestionador de rutas
28
Práctica N° 11: Node JS y Express
// Manejadores de rutas
router.get('/',function(req,res){
res.sendFile(path.join(__dirname+'/index.html'));
});
router.get('/instruments',function(req,res){
res.sendFile(path.join(__dirname+'/instruments.html'));
});
router.get('/support',function(req,res){
res.sendFile(path.join(__dirname+'/support.html'));
});
module.exports = router;
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link
href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-
iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT"
crossorigin="anonymous">
<title>Inicio</title>
</head>
<body>
<div class="text-center margin m-3">
<img width="100" src="./public/Yamaha.jpg"/>
</div>
<img src="./public/Trumpet.jpg"/>
</div>
</body>
</html>
instruments.html
29
Práctica N° 11: Node JS y Express
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT"
crossorigin="anonymous">
<title>Instruments</title>
</head>
<body>
<div class="text-center margin m-3">
<img width="100" src="./public/Yamaha.jpg"/>
</div>
support.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
30
Práctica N° 11: Node JS y Express
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT"
crossorigin="anonymous">
<title>Support</title>
</head>
<body>
<div class="text-center margin m-3">
<img width="100" src="./public/Yamaha.jpg"/>
</div>
31
Práctica N° 11: Node JS y Express
Express y Middleware
package.json
{
"name": "expressmiddleware",
"version": "1.0.0",
"description": "Ejercicio Express y Middleware",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Joseph Ordonez",
32
Práctica N° 11: Node JS y Express
"license": "ISC",
"dependencies": {
"express": "^4.18.2"
}
}
index.js
// importando paquete express
var express = require('express');
const path = require('path');
// Middleware
const middleware = function(req,res,next){
cont++
console.log('Ejecución de middleware nro: ', cont);
next();
};
// Invocando middleware
app.use(middleware);
// Manejador de rutas
var rutas = require('./urls.js');
app.use('/',rutas);
// levantando servidor
app.listen(3000,function(){
console.log('Servidor iniciado en http://localhost:3000');
});
urls.js
var express = require('express');
var router = express.Router();
const path = require('path');
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT"
crossorigin="anonymous">
33
Práctica N° 11: Node JS y Express
<title>Inicio</title>
</head>
<body style="background-color: beige;">
<div class="text-center margin m-3">
<img width="200" src="./public/Meiji.png"/>
</div>
6. CONCLUSIONES DE LA PRÁCTICA:
a) Con la elaboración de la experiencia de practica se pudo apreciar el alto rendimiento al ejecutar
la aplicación, dado que Node.js se ejecuta a tiempo real, por ende, se entiende que Node se
implementa cuando se realizaran operaciones como acceso a la base de datos o ficheros y en
aplicaciones que operan a tiempo real como los juegos en línea.
b) Por otro lado, tenemos a Express, este Framework minimalista de fácil instalación el cual nos
ayudó a simplificar el proceso de desarrollo que ya teníamos con Node.js, se percibió las
diferencias en la gestión de rutas entre Express y Node donde notamos como Express es más
fácil de mantener.
c) Express es un marco de aplicación web minimalista con grandes ventajas, pero también
necesitamos agregar bibliotecas y funciones de terceros para expresar todo su potencial.
d) Node.js le permite crear cualquier aplicación que pueda crear en cualquier otro lenguaje de
propósito general como Java, C, Python o Ruby.
e) ExpressJS permite manejar rutas de manera práctica y sencilla, haciendo que la aplicación
cuente con una mayor escalabilidad.
f) El middleware en ExpressJS puede ayudarnos a realizar operaciones que no son visibles al
usuario, de modo que se puedan registrar cuantas veces se solicitó una página o a que hora se
pulsó un botón. De este modo podemos identificar ataques de solicitud como también guardar
registros de asistencia, entrada y salida.
34
Práctica N° 11: Node JS y Express
7. CUESTIONARIO
1. ¿Qué es un framework?
Un framework es un esquema o marco de trabajo que trabaja con Node.js y ofrece una
estructura base para elaborar un proyecto con objetivos específicos
2. ¿Qué es un entorno de ejecución?
Un entorno de ejecución es un servicio de máquina virtual que sirve como base software para
la ejecución de programas. En ocasiones pertenece al propio sistema operativo, pero también
se puede instalar como software independiente que funcionará por debajo de la aplicación.
3. ¿Cuál es la diferencia entre Node JS y Express?
Node. js se utiliza para crear aplicaciones controladas por eventos, E/S del lado del servidor.
Express. js utiliza enfoques de Node.
4. ¿Cuáles son las ventajas o características más resaltantes de Express?
Análisis del cuerpo de las peticiones HTTP.
Enrutado y mejor organización del código.
Cabeceras automáticas en las respuestas.
Determinación de las cabeceras apropiadas para las respuestas.
Parámetros URL análisis del query string.
Análisis de las cookies.
5. ¿Indique un ejemplo de una situación en la quería útil utilizar un Middleware en una
aplicación web?
Middleware es software que proporciona servicios y funciones regulares además de las
aplicaciones proporcionadas por el sistema operativo. Por lo general, se ocupa de la gestión
de datos, los servicios de aplicaciones, las comunicaciones, la autenticación y la gestión de
API.
6. ¿Haga un cuadro comparativo de Node JS y otro entorno virtual de ejecución similar
conocido en el mercado?
Node.js Bun.js
Agrupar una plantilla básica de React toma 6 Compatible con JSX, Typescript y TSX.
segundos. Agrupar una plantilla básica de React toma 8ms.
Un servidor HTTP sin procesar de node.js maneja Un servidor HTTP sin procesar de bun.js maneja
70k solicitudes por segundo. 152k solicitudes por segundo.
Mas lento que bun.js Mas rápido que NPM.
Soporta Next.js No es compatible con Next.js en su totalidad.
Posee un amplio soporte y documentación. No tiene un soporte completo y documentación.
Usa JavaScript V8 de Google. [3] Usa JavaScriptCore en lenguaje Zig.[3]
35
Práctica N° 11: Node JS y Express
8. BIBLIOGRAFÍA
[1] Qué es Node.js y para qué sirve. (s. f.-a). Blog de LucusHost.
https://www.lucushost.com/blog/que-es-node-js/
[2] ¿Qué es Express.js? Todo lo que Debes Saber. (s. f.). Kinsta. https://kinsta.com/es/base-de-
conocimiento/que-es-express/
36