Configuración de la aplicación Tutoriales Pillars.js

Cuando realizamos la inclusión de Pillars.js var project = require("pillars"), es devuelto un objeto, el cual estamos seteando en project.

Cualquier require de 'pillars' devolverá siempre la misma instancia. Todas las librerías Pillars.js se cargan en modo singleton.

project contiene una configuración mínima inicial, convención sobre configuración, por lo que en principio no hay que preocuparse por configurar el proyecto. No obstante en esta sección vemos qué propiedades del proyecto podemos configurar, dónde se engloban, y su relación con otros elementos de Pillars.js.

Es posible configurar el proyecto mediante el método project.configure(), pasándole el objeto de configuración pertinente, o realizando las configuraciones por propiedad individual, a las que podemos acceder en la propiedad project.config

Todo lo que se va a exponer, se encuentra también documentando en la referencia de una forma más técnica.

const project = require("pillars");

project.config.debug = true ;

project.configure({
debug: true,
renderReload: true
});

Directorios

Al crear una aplicación en Pillars.js, observarás que se crean dos carpetas adicionales a node_modules:

  • logs, directorio en le que se guardarán todos los ficheros de logs, en caso de que el sistema de logs, esté activo. Se activa, estableciendo a true la propiedad del proyecto .logFile
  • temp, directorio donde se ubican los archivos temporales, como archivos subidos mediante post.

Upload File

El tamaño máximo de archivo permitido se configura de forma global para el proyecto de la siguiente forma:

const project = require("pillars");
project.config.maxUploadSize = 5*1024*1024; // 5MB - Tamaño máximo de archivo permitido

No quiere decir esto, que siempre se tenga que mantener este límite en toda la aplicación, ya que esta propiedad es posible redefinirla para un controlador o controladores concretos.

const project = require("pillars");

project.routes.add(new Route({
id:"upload-archivos-pesados"
method: ["POST","GET"], // Establecemos para que acepte POST y GET
multipart: true, // Establecemos para que acepte ficheros
maxUploadSize: 25*1024*1024 // Redefinimos el límite en 25MB.
},function(gw){
const myFile = gw.files;
//...
gw.send("El archivo ha sido recibido y guardado");
}));

Estos ficheros son almacenados temporalmente en el directorio /temp, (el cual es activado por el middleware BodyReader, que es el encargado de leer el cuerpo de la petición en las peticiones post.)

const project = require("pillars");
project.middleware.get("BodyReader").tempDirectory = "./otroDirectorio";

Templating

Una de las librerías incorporadas a Pillars.js es templated.

Esta librería permite añadir el motor de plantillas que más nos guste a Pillars.js. Es un Multi template engine manager.

Hay aspectos del templating cuyo comportamiento debe ser global para la aplicación, por lo que hay propiedades en project relativas a éste:

const project = require("pillars");
project.configure({
renderReload: true, // Compila el template solo la primera vez que es solicitado y lo guarda en caché
directoryTemplate: "template.hbs", // Es el template que se utiliza para listar directorios
errorTemplate: "templateError.hbs" // Template que se utiliza para páginas de error.
});

Debug Mode

Establecer el Modo Debug nos permite ver información adicional de los errores en consola:

const project = require("pillars");
project.config.debug = true;

Es false por defecto.

CORS

Para configurar CORS, tenemos en el proyecto esta propiedad. Para aceptar solicitudes CORS de cualquier origen, la seteamos a true. Para que deniegue cualquier solicitud cors, a false. Y para definir de qué dominios las aceptará, lo definimos en un Array de strings. Es false por defecto.

const project = require("pillars");
project.config.cors = ["www.smartloop.es"];

favicon

Simplemente para establecer el favicon de la aplicación web:

const project = require("pillars");
project.config.favicon = "img/favico.ico";

Sistema de logs

Pillar.js incorpora un sistema de logs. Éstos están por defecto desactivados, puedes activarlos estableciendo la propiedad .logFile a true. Al activarlo se crearan archivos de logs, con toda la información de peticiones al servidor, en la carpeta: logs

const project = require("pillars");
project.config.logFile = true;

Optimización RAM

En Pillars.js podemos configurar cómo se comporta el cacheo, lo que permite, en función de las características de la aplicación, optimizar el uso de RAM.

¿Cómo funciona el cacheo?

Se define un tamaño máximo de caché para la aplicación, por defecto son 250MB. En este espacio, se cachean archivos, plantillas, etc. Es decir, todo lo que suponga un envío de fichero en la respuesta HTTP. Por lo que tenemos una caché con archivos que han sido solicitados.

¿Qué ventajas tiene?

Evita lecturas en disco, por lo que si el archivo no ha sido modificado, se sigue enviando el archivo ubicado en la caché.

¿Se limpia la cache en algún momento mientras la aplicación está en marcha?

Por supuesto, siempre que vaya llegando al límite de su uso se aplican una serie de reglas, como por ejemplo, borrar los archivos menos demandados.

const project = require("pillars");
project.configure({
maxCacheFileSize: 5*1024*1024, // 5MB - Tamaño máximo de un archivo para que entre en la caché
cacheMaxSamples: 100, // Dato relacionado con la heurística de uso de los archivos
cacheMaxSize: 250*1024*1024, // 250MB - Tamaño máximo de la caché
cacheMaxItems: 5000, // Número máximo de elementos en la caché
});

Volver arriba