viernes, 12 de junio de 2020

Proyecto de 5 capas con nodeJS

Proyecto de 5 capas con nodeJS


Al modelo de MVC vamos a añadir dos capas mas:
  • Capa de servicio: Es una capa usada por web y otro tipo de aplicaciones.
  • Capa de datos: Capa de la persistencia de datos.


Por ejemplos vamos a crear una nueva carpeta llamada miProyecto o el nombre que queramos.
Abrimos una ventana de cmd si es en windows o un nuevo terminal en linux.
Accdemos a la carpeta inicial de nuestro proyecto y ejecutamos el comando npm init para crear el fichero package.json donde nos hara una serie de preguntas:
 
package name: (miproyecto)  Ponemos el nombre del proyecto que queramos o dejamos el que nos dice por defecto.
version: (1.0.0) Numero de la versión.
description:     Descripción del proyecto.
entry point: (main.js)  Ponemos el archivo de inicio del proyecto,lo dejamos como esta o ponemos el queramos.
los demas le damos a enter en vacio sin problemas y el unico que podemos cambiar podria ser el author.
test command:
git repository:
keywords:
author:
license: (ISC)

Desde la consola instalamos las siguientes dependencias:
 
Cada dependencia tendrá su nombre del modulo y la ultima version modulo.
 
npm install body-parser
npm install cookie-session
npm install ejs
npm install express
npm install jade
npm install mocha
npm i nodemon -D //como paquete de dependencia, nos ayuda a reiniciar el servidor.
npm install morgan //middleware  que nos va a dar informacion de las peticiones.
npm install cookie-parser

Insertamos en script  las siguientes lineas:
 
"start": "node main.js"
"dev": "nodemon ./main.js"

Abrimos el proyecto con visual estudio code.
Creamos cinco carpetas:
  •  modelo
  •  controlador
  •  vista
  •  servicio
  • datos
Creamos en el directorio principal un nuevo fichero llamado main.js.
Importamos las siguientes librerias:
 

var bodyParser = require('body-parser');

var cookie = require('cookie-session');

var ejs = require('ejs');

var express = require('express');

var path = require('path');

var http = require('http');

var morgan = require('morgan');

var cookieParser = require('cookie-parser');




Configuramos el servidor por ejemplo en el puerto 4200:
 
var port = process.env.PORT || 4200;
var app = express();
var server = http.createServer(app);
server.listen(port, function () {
console.log('Servidor escuchando en el puerto %d', port);
});
app.set('port', port);

Configuramos los motores de plantilla que vallamos a usar:
 
Si usamos jade:
var viewPath = path.join('./vista'); //Establecemos el camino relativo en ./vista
app.set('views',viewPath);
app.set('view engine', 'jade');

Si usamos html:
var viewPath = path.join('./vista'); 
app.set('views',viewPath); 
app.engine('html',ejs.renderFile);
 
Si usamos ejs: 
var viewPath = path.join('./vista'); //Establecemos el camino relativo en ./vista                   app.set('views', viewPath)                                                                                                          app.set('view engine', 'ejs');


Definimos los middlewares que modifican la request:
 
app.use(bodyParser.json());
app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended: false }));
var viewPath = path.join('./');
app.use(express.static(path.join(viewPath)));

Establecemos el paquete morgan: 
 
app.use(morgan('dev'));


Dentro de la carpeta de controlador creamos la ruta llamada index.js si vamos a usar jade: 
 
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
res.render('index', { title: 'Bienvenido a Express' });
});
module.exports = router;

 
Dentro de la carpeta de controlador creamos la ruta llamada index.js si vamos a usar html:
 
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
res.render('index.html');
});
module.exports = router;

Otra vez en main.js:
Establecemos el milddeware de inicio en la ruta /: 
 
app.use('/',index);

Establecemos el middleware de ruta no encontrada:
 
app.use(function(req, res, next) { 
res.status = 404; 
res.render('error', { error: 'HTTP/1.1 404 Not Found' });
});


Establemos la ruta dentro de main.js:
var index = require('./controlador/index');

Dentro de la carpeta de vista creamos los siguientes archivos:

Si usamos el motor de plantillas con jade:

index.jade:
 
html
 head
  title Pagina Principal del proyecto
 body
  h1 #{title}
error.jade:
html
 head
  title Pagina no existente
 body
  h1 #{error}



Si usamos el motor de plantillas de html:
 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
   <p> Bienvenido </p>
</body>
</html>

Si usamos el motor de plantillas ejs:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
   <p> Bienvenido </p>
</body>
</html>
 
Inciamos el proyecto con el comando:
npm run dev : Si queremos que se reinice el servidor cada que toquemos codigo
npm run startArranque normal
 

No hay comentarios:

Publicar un comentario