Post on 12-Aug-2015
16 junio 2015 - Madrid
framework de desarrollo web para
www.pillarsjs.com
¿Por qué?
•Optimización de tiempos de desarrollo
•Entorno homogéneo
•Estructuras Dinámicas
•“Pluginizable”
•Herramientas
Objetivos de Pillars.jsProporcionar un entorno de trabajo homogéneo,
asequible y optimizado, para de esta forma hacer llegar el desarrollo web en Node.js a un público más
amplio.
ObjetivoOfrecer a la comunidad un
marco de desarrollo web para Node.js, sencillo, ágil y bien
documentado.Las herramientas que necesitamos para el desarrollo web, estén implementadas
de base.
Make it easy!
Estado actual
• Documentación de librerías
• Documentación y referencia en Inglés
• Test unitarios
Hola Mundo!
Hello World!! - Code
/01-hello-world/app.js
Información en consola de las peticiones y envíos
Negociación HTTP
gangway: un objeto generado automáticamente en cada petición. Tiene como propiedades los datos del request parseados y métodos para la respuesta (response).
gwPlugins built-inLangPath, encoding, maxUploadSize, CORS, directory, bodyReader{
Gestión de Caché del sistema de archivos
.maxCacheFileSizeTamaño máximo de un archivo para que entre en la caché. Si el archivo supera este tamaño no lo mete en memoria ni lo comprime.
.cacheMaxSamplesDato relacionado con la heurística del reciclado de caché del servidor, indica el máximo número de usos que se tienen en cuenta para el cálculo.
.cacheMaxSize Tamaño máximo de la caché del servidor.
.cacheMaxItems Número máximo de elementos en la caché del servidor.
project.config
Cabeceras HTTP parseadas
Accepts gw.accepts.types Array ordenado
Accepts-Language gw.accepts.languagesgw.language//> ‘en’
Accepts-Encoding gw.accepts.encodingsgw.encoding//> ‘deflate’
User-Agent gw.uagw.ua.mobile//> false
Authorization gw.auth
gw.auth.user, gw.auth.pass//> ‘userName’, ‘userPass’
CORS gw.corstrue, false o array de dominios
ejemplos
Datos de la solicitud
IP gw.ip
HOST gw.host
PUERTO gw.port
MÉTODO gw.method
FICHEROS gw.files
POST gw.content.params
GET gw.query
PATH PARAMS gw.pathParams
HTTPS gw.https
ejemplos
Respuesta
Envío de ficheros gw.file()
Envío (response)gw.send(), gw.html(), gw.text(), gw.json()...
ejemplos
Gestión de Cookies
Seteo cookies para el envíogw.setCookie(name, value [, config]);
Cookies enviadas en el request
gw.cookie;
WWW-Authenticate
gw.authenticate();gw.auth.usergw.auth.pass
ejemplos
Enrutado y controladores
&project.routesRoute Class
/a-1
project.routes
/b-1 /b-2 /b-n...
/a-2
/c-1 /c-2 /c-n...
/a-n
/z-1 /z-2 /z-n...
...
Route Class
var myRoute = new Route( configuration, handler);
project.routes{.add(route object)
.get(id route object)
.remove(id route object)
.move(id route object)
Añadiendo hijos
{.add(route object)
.get(id route object)
.remove(id route object)
.move(id route object)
myRoute.routes
instancia de la Clase Route
Añadiendo hijos
Plugins
&project.pluginsPluginClass
Control y direccionamiento de la solicitud
project.plugins
El funcionamiento y flujo de trabajo en Pillars.js se basa en la Cadena de
Plugins, que está formada por objetos de la Clase Plugin.
Plugin router.js
Controlador(Route)
project.plugins{.add(plugin object)
.get(id plugin object)
.remove(id plugin object)
.move(id plugin object)
Añadiendo plugins
PluginClass
project.plugins.add(myPlugin, ‘p2’);
Controlador(Route)
Creación de un Plugin
Un Plugin sólo afectará/se ejecutará en las instancias route que
determinemos.
Ejemplo. Plugin que bloquea una URI al visitarla más de 5 veces.
i18nLibrería textualization
https://github.com/bifuer/textualization
es.js
en.js
idioma por defecto
2/3
Hello!! - i18n
Hello World!! - i18n
1/3
Hello World!! - i18n
Hojas de traducción JS/JSON - 3/3
Directorio estáticoBuilt-in: directory.js
Creación de directorio estático
Librerías
templated Añade motores de renderizado. https://github.com/bifuer/templated
textualization
Internacionalización https://github.com/bifuer/textualization
Scheduled Automatización de tareas con patrones cron y control de estado.
https://github.com/bifuer/scheduled
Crier Gestión de logs, configuración de almacén, tipo de log, etc.
https://github.com/bifuer/crier
Procedure Simple JS async development https://github.com/bifuer/procedure
JSON.decycled
Versión de JSON.stringify() y JSON.parse() respectivamente, pero compatible con objetos con referencias circulares, expresiones regulares, objetos de error, objetos date y funciones.
https://github.com/bifuer/JSON.decycled
Algunas de las librerías están aún sin documentar. Estamos trabajando en ello ;).
Turno de Preguntas
Referencia y manualesdisponibles en: www.pillarsjs.com
¡Gracias a todos por vuestra atención!
Si quieres colaborar{chelo@pillarsjs.comjavi@pillarsjs.com