Servidor Express
Last updated
Was this helpful?
Last updated
Was this helpful?
Montar un servidor web mediante paquetes propios de node
Entender la arquitectura de Express
Middleware
Uso de paquetes para extender la funcionalidad de Express
Creación de un servidor web que sirva:
Contenido estático
Contenido dinámico en base a templates
Content-type en JSON (para API posterior)
Extensa pero concisa
Numerosos ejemplos
Instalar express mediante uno de los comandos siguientes:
Creamos el fichero server.js con el siguiente código:
DeberÃa ejecutarse de cualquiera de las siguientes maneras:
Utiliza nodemon para evitar reinicios al cambiar código
Se echa de menos algún tipo de mensaje de arranque
Cuando el método listen haya terminado...
Permite añadir más parámetros
Un parámetro de tipo función (función de callback)
Es el único parámetro de este tipo, asà los diferencia
Utiliza el plugin ExpressSnippet de Visual Code para completado
Comprueba su funcionamiento con el app.listen
Datos nueva ruta:
URL: /contactar
Muestre el mensaje Página para contactar
Vamos a devolver un JSON en vez de un string:
Utiliza algún plugin de formateo de JSON dentro del navegador
El JSON puede ser más complejo que el anterior, por ej:
Comprueba como cambia el content type
Utiliza las herramientas de desarrollo
El cambio lo hace directamente Express
Los datos en JSON podrÃan estar:
En una variable
Incluso en otro fichero
Recibirse vÃa API
....
Son funciones que:
Se registran por express mediante app.use y se ejecutan en orden
Tienen acceso al objeto de solicitud (req), al objeto de respuesta (res) y a la siguiente función de middleware (next)
Podemos crear un middleware que guarde traza de las fechas de accesos
Es importante el orden
Entre los middlewares
Antes que las peticiones get, post....
Completa el middleware anterior para que guarde los cambios en el fichero server.log
Piensa donde se debe poner el next() y si debes utilizar un método sÃncrono o asÃncrono
Podemos querer utilizar distintos transports o medios para logs
Ficheros
Consola
Distintos niveles (debug, err, warning...)
Distintos formatos de visualización (colores, negrita...)
Con posibilidad de ejecución de queries
....
Crea un fichero .html en la carpeta public
Ayúdate de emmet: ! + tab
Express ya tiene un middleware integrado para contenido estático
No deja de ser una función como las vistas anteriormente
No necesitamos importarla mediante un require
Una vez importado, hace un send() si existe el fichero, si no, un next()
__dirname es la raÃz del proyecto
path.join para que sea multiplataforma
PodrÃamos configurar un directorio virtual (static para public)
Mostrar un index.html está bien pero puede que necesitemos:
Inyectar valores en el html
"includes" para footer, header... (patrón diseño DRY)
Tenemos que elegir un motor de plantillas
Instalación
Configuración
No hacemos un require porque no usamos ninguna función
express lo llama internamente
Indicamos a nodemon los tipos de ficheros a monitorizar (por defecto solo js):
Definimos una carpeta views donde irán las templates
Fichero views/contactar.hbs:
Ejecutamos el método res.render() en vez de res.send()
Admite un objeto como segundo parámetro para pasar variables
Registramos el directorio donde se van a guardar:
Creamos fichero views/partials/footer.hbs:
Lo incluimos dentro de nuestro fichero views/contactar.hbs:
Añade una página de inicio además de contactar
Ambas deben cargar su correspondiente template que además cargará un partial para el header y otro para el footer
Se registran funciones que devuelven un código dinámico
Se pueden inyectar en cualquier template o partial.
PodrÃamos eliminar el paso de currentYear a las vistas y utilizar el helper:
Ya estamos preparados para utilizar express para crear una API
como añadir esa opción
Para ver las propiedades que nos hacen falta podemos usar la
Lo mejor es
Utilizaremos hbs que es un wrapper de