Ejercicio 1
En primer lugar vamos a ver cmo instalar Node.js. Para ello accedemos a la pgina web: http://
nodejs.org/
Pulsando el botn install se descargar un ejecutable que siguiendo los pasos nos debera
instalar correctamente Node.js en nuestro ordenador.
Para comprobar que ha sido instalado podemos poner el siguiente comando en nuestro terminal
o ventana de comandos en windows: node -version
Este comando nos mostrar la versin de Node.js instalada. Si es as, ya podemos introducir
comandos JavaScript en nuestra consola de Node.js. En primer lugar ponemos node para que se
abra la terminal de Node.js dentro de nuestra terminal.
Pgina 1
www.imaginaformacion.com
Imagina Formacin
Ejercicio 2
En este ejercicio vamos a hacer una calculadora a travs del navegador, de forma que
introduciendo diferentes rutas y parmetros nos devuelva el resultado, por ejemplo:
Para ello, en primer lugar vamos a crear el mdulo que realiza las operaciones al igual que vimos
en teora. Este fichero se llamar operaciones.js:
function suma(a,b){
return parseInt(a) + parseInt(b);
}
function resta(a,b){
return parseInt(a) - parseInt(b);
}
function mult(a,b){
return parseInt(a) * parseInt(b);
}
function div(a,b){
return parseInt(a) / parseInt(b);
}
Por ltimo slo nos quedar aadir la funcin export para poder acceder a las
funciones creadas del mdulo
module.exports = {
suma: suma,
resta: resta,
mult: mult,
div: div
}
Ha llegado el momento de crear nuestro servidor. Lo haremos en otro fichero que llamaremos
server.js y en primer lugar contendr lo siguiente:
Pgina 2
www.imaginaformacion.com
Imagina Formacin
Una vez hecho esto, crearemos en primer lugar el esqueleto de nuestro servidor:
server.listen(3000, function(){
console.log("tu servidor est listo en " + this.address().port);
});
En primer lugar tenemos que obtener la url que ha sido llamada, para ello tenemos la el mtodo
parse del mdulo url. Esto crea un objeto del cual podemos obtener los parmetros que
necesitemos:
Pgina 3
www.imaginaformacion.com
Imagina Formacin
Con todo preparado ya slo nos quedara aadir las funciones pertinentes:
if (pathname == "/suma") {
respuesta.write(num1 + "+" + num2
} else if(pathname == "/resta"){
respuesta.write(num1 + "-" + num2
} else if(pathname == "/mult"){
respuesta.write(num1 + "*" + num2
} else if(pathname == "/div"){
respuesta.write(num1 + "/" + num2
}
});
server.listen(3000, function(){
console.log("tu servidor est listo en " + this.address().port);
});
Para ejecutar el servidor nos desplazamos en el terminal hasta la carpeta en la que hemos creado
nuestros ficheros. Y ejecutamos el comando:
node server.js
Pgina 4
www.imaginaformacion.com
Imagina Formacin
Y para probarlo slo nos quedar realizar llamadas al servidor como las mostradas de ejemplo al
principio del ejercicio 2.
Ejercicio 3
En este ejercicio vamos a preparar un servidor con Express que muestre una lista de nombres
cuando llamemos a la url. De esta manera veremos cmo confeccionar de manera correcta el
manejador de rutas con Express y cmo mostrar los elementos en una lista.
Una vez creado, entramos a la carpeta de nuestro proyecto e instalamos las dependencias con:
$ cd express_ej1
$ sudo npm install
Ya tenemos listo nuestro proyecto. En primer lugar vamos a borrar ficheros que no nos sern
necesarios para nuestra aplicacin.
Primero borramos el fichero users.js de la carpeta routes y las siguientes lineas de nuestro fichero
app.js:
Despus de eliminar estos ficheros y lneas debera funcionar correctamente, para comprobarlo:
$ npm start
Pgina 5
www.imaginaformacion.com
Imagina Formacin
El servidor debe ponerse en marcha y acceder a el a travs del navegador con la URL localhost:
3000 y visualizar la pgina de entrada de Express.
Ahora es el momento de crear una lista de nombres con una funcin para
devolver estos nombres.
En segundo lugar vamos a modificar cmo se mostrar la informacin por pantalla, para ello
crearemos un fichero index.html en la carpeta views que se corresponder con nuestro fichero
swig. Tendr la siguiente forma:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Personas</title>
{% for nombre in nombres %}
{% if loop.first %}<ol>{% endif %}
<li>{{ nombre }}</li>
{% if loop.last %}</ol>{% endif %}
{% endfor %}
</head>
<body>
</body>
</html>
Como podemos observar, se realizar un bucle que imprimir un nombre en cada elemento de
una lista. Aparte, nos valemos de la variable interna del bucle loop para realizar unas acciones
especficas la primera y la ltima vez que se ejecuta el bucle.
Pgina 6
www.imaginaformacion.com
Imagina Formacin
Slo nos quedara enlazar los datos con la interfaz cuando se llame a /. Para ello tendremos que
modificar el fichero index.js de la carpeta routes. Debemos indicar que cargue nuestro fichero
index.html en con nuestro Array de nombres:
Por ltimo slo nos quedara indicar a nuestra aplicacin que la renderizacin se har a travs de
Swig y no de Jade como cre en un primer momento el generador.
Antes de nada debemos instalar Swig en nuestro proyecto, lo haremos con npm:
// Jade
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
//Swig
var swig = require('swig');
swig.setDefaults({ cache: false });
app.engine('html', swig.renderFile);
app.set('views', __dirname + '/views');
app.set('view engine', 'html');
Una vez hechas estas modificaciones nuestro servidor funcionar perfectamente, y devolver una
lista de nombres al introducir la url: localhost:3000
Pgina 7
www.imaginaformacion.com
Imagina Formacin
Ampliacin
Realizar las modificaciones necesarias a la aplicacin Angular de los ejercicios del tema 9,
correspondiente a la estructuracin en plantillas del listado, agregacin de elementos y vista de
elemento de una coleccin, para que actualice dicha coleccin del lado del servidor.
/api/elements/list
/api/elements/add
Nota: aprovechar la coleccin devuelta por /api/elements/list para la vista de elemento.
Para guardar los elementos nuevos del lado del servidor no ser necesario utilizar ningn sistema
de base de datos. Mediante una coleccin, podremos interactuar con sus elementos y mantener
los cambios durante el ciclo de vida de la instancia del servidor.
Pgina 8
www.imaginaformacion.com
Imagina Formacin