Pillars.js framework de desarrollo web para Node.js

Post on 12-Aug-2015

559 views 1 download

Transcript of Pillars.js framework de desarrollo web para Node.js

16 junio 2015 - Madrid

framework de desarrollo web para

www.pillarsjs.com

¿Por qué?

Licencia

MIThttp://github.com/bifuer/pillars

•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