SlideShare una empresa de Scribd logo
1 de 25
Primeros pasos con
Aurelia
Jose Angel Parreño (@j8seangel)
Raúl Requero Garcia (@rrequero)MADRID · NOV 27-28 · 2015
MADRID · NOV 27-28 · 2015
¿Quien somos?
Raúl Requero
Fullstack developer
@rrequero
Jose Angel Parreño
Frontend developer
@j8seangel
MADRID · NOV 27-28 · 2015
Índice
- Que es Aurelia
- Características
- Entorno de desarrollo
- Flujo de ejecución y ejemplos
MADRID · NOV 27-28 · 2015
¿Que es Aurelia?
"Aurelia is a next generation
JavaScript client framework that
leverages simple conventions to
empower your creativity."
Rob Eisenberg
MADRID · NOV 27-28 · 2015
Características
● Poca abstracción
● Inyección de dependencias
● Adaptative binding
● Extendible
● No tiene dependencias externas
● Routing
● Buena documentación y ejemplos
MADRID · NOV 27-28 · 2015
Entorno
MADRID · NOV 27-28 · 2015
Demo
https://github.com/rrequero/primeros
_pasos_con_aurelia_talk
MADRID · NOV 27-28 · 2015
Scaffolding
MADRID · NOV 27-28 · 2015
Ejecución 1 - index.html
MADRID · NOV 27-28 · 2015
Ejecución 2 - main.js
MADRID · NOV 27-28 · 2015
Ejecución 3 - app.js
MADRID · NOV 27-28 · 2015
Ejecución 4 - app.js(2)
MADRID · NOV 27-28 · 2015
Ejecución 5 - app.html
MADRID · NOV 27-28 · 2015
Ejecución 6 - pantallas
- Navigation lifecycle :
- canActivate
- activate
- canDeactivate
- deactivate
MADRID · NOV 27-28 · 2015
Ejecución 7 - listado
- Por convención irá a cargar el
<moduleId>.js y <moduleId>.html del
moduleId.
- Todos los métodos y atributos definidos
en la clase están disponibles en la vista.
MADRID · NOV 27-28 · 2015
Ejecución 8 - template
- String interpolation: ${varName}
- Resources:
- repeat.for=”elem in array”
- $index, $first, $last, $even, $odd
- if.bind / show.bind
- click.trigger / delegate
- route-href=”route: “name”, params.bind;”{}””
MADRID · NOV 27-28 · 2015
Ejecución 9 - data binding
- select: value.bind for.bind=”option in options”
- radio/checkbox: value.bind checked.bind
- innerhtml: innerhtml.bind
- textcontent: textcontent.bind (1 way)
- contenteditable = “true” (2 ways)
- inline-styles: styles.bind=”varName”
MADRID · NOV 27-28 · 2015
Custom elements - definición
- Podemos crear tags html como un “web-
component”.
- Por convención:
- class <name>CustomElement
- Por configuración:
- @customElement('example')
MADRID · NOV 27-28 · 2015
Custom elements - configuración
- Para compartir información:
- @bindable <name>
- Por convención buscará una template y js
con el mismo nombre
- Por configuración:
- @useView(‘path’)
- @noView()
MADRID · NOV 27-28 · 2015
Custom elements - uso
- Para poder utilizar el custom element en una
template necesitamos importarla:
- Una vez importada la utilizamos como un
elemento más:
MADRID · NOV 27-28 · 2015
Custom attributes - configuración
- Añaden nuevo comportamiento a elementos
HTML o custom elements.
- Por convención:
- class <name>CustomAttribute
- Por configuración:
- @customAttribute('example')
MADRID · NOV 27-28 · 2015
Custom attributes - uso
- Para poder utilizar el custom element en una
template necesitamos importarla:
- Una vez importada la utilizamos como un
elemento más:
MADRID · NOV 27-28 · 2015
Http-fetch-client
- Módulo de aurelia que usa la
implementación fetch API.
- Permite:
- Añadir/eliminar headers
- Definir baseUrl
- Interceptors
MADRID · NOV 27-28 · 2015
Http-fetch-client - ejemplo
MADRID · NOV 27-28 · 2015
¡¡¡ GRACIAS !!!

Más contenido relacionado

Similar a Primeros pasos con aurelia

Codemotion 2015 crash y youdebug
Codemotion 2015   crash y youdebugCodemotion 2015   crash y youdebug
Codemotion 2015 crash y youdebugjmiguel rodriguez
 
Cuando los desarrolladores conocieron SSAS, Business Intelligence y Big Data
Cuando los desarrolladores conocieron SSAS, Business Intelligence y Big DataCuando los desarrolladores conocieron SSAS, Business Intelligence y Big Data
Cuando los desarrolladores conocieron SSAS, Business Intelligence y Big DataRuben Pertusa Lopez
 
Introduciendo drupal 8
Introduciendo drupal 8Introduciendo drupal 8
Introduciendo drupal 8Atenea tech
 
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...SolidQ
 
Postgres como base de datos NoSQL. Codemotion 2015
Postgres como base de datos NoSQL. Codemotion 2015Postgres como base de datos NoSQL. Codemotion 2015
Postgres como base de datos NoSQL. Codemotion 2015Ruben Gómez García
 
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...Enrique Catala Bañuls
 
ASP.NET MVC Core by Eduard Tomàs
ASP.NET MVC Core by Eduard TomàsASP.NET MVC Core by Eduard Tomàs
ASP.NET MVC Core by Eduard TomàsPlain Concepts
 
React, Flux y React native
React, Flux y React nativeReact, Flux y React native
React, Flux y React nativeEduard Tomàs
 
UNTAGGED.DAY #1 . Seguimiento de aplicaciones con Firebase_GA4
UNTAGGED.DAY #1 . Seguimiento de aplicaciones con Firebase_GA4UNTAGGED.DAY #1 . Seguimiento de aplicaciones con Firebase_GA4
UNTAGGED.DAY #1 . Seguimiento de aplicaciones con Firebase_GA4thyngster
 
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos AiresPresentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Airespeterpunk
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Eduard Tomàs
 
Azure web apps deep dive
Azure web apps   deep diveAzure web apps   deep dive
Azure web apps deep diverobertogg
 

Similar a Primeros pasos con aurelia (20)

La Noche Electoral
La Noche ElectoralLa Noche Electoral
La Noche Electoral
 
Codemotion 2015 crash y youdebug
Codemotion 2015   crash y youdebugCodemotion 2015   crash y youdebug
Codemotion 2015 crash y youdebug
 
Codemotion 2014 Scala @real life
Codemotion 2014 Scala @real lifeCodemotion 2014 Scala @real life
Codemotion 2014 Scala @real life
 
Scala @ Real Life Codemotion 2014
Scala @ Real Life Codemotion 2014Scala @ Real Life Codemotion 2014
Scala @ Real Life Codemotion 2014
 
Cuando los desarrolladores conocieron SSAS, Business Intelligence y Big Data
Cuando los desarrolladores conocieron SSAS, Business Intelligence y Big DataCuando los desarrolladores conocieron SSAS, Business Intelligence y Big Data
Cuando los desarrolladores conocieron SSAS, Business Intelligence y Big Data
 
Introduciendo drupal 8
Introduciendo drupal 8Introduciendo drupal 8
Introduciendo drupal 8
 
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
 
Postgres como base de datos NoSQL. Codemotion 2015
Postgres como base de datos NoSQL. Codemotion 2015Postgres como base de datos NoSQL. Codemotion 2015
Postgres como base de datos NoSQL. Codemotion 2015
 
Semana 2 Configuración entorno de desarrollo
Semana 2   Configuración entorno de desarrolloSemana 2   Configuración entorno de desarrollo
Semana 2 Configuración entorno de desarrollo
 
HTML5 Nuevas Etiquetas Semanticas
HTML5 Nuevas Etiquetas SemanticasHTML5 Nuevas Etiquetas Semanticas
HTML5 Nuevas Etiquetas Semanticas
 
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
 
ASP.NET MVC Core
ASP.NET MVC CoreASP.NET MVC Core
ASP.NET MVC Core
 
ASP.NET MVC Core by Eduard Tomàs
ASP.NET MVC Core by Eduard TomàsASP.NET MVC Core by Eduard Tomàs
ASP.NET MVC Core by Eduard Tomàs
 
React, Flux y React native
React, Flux y React nativeReact, Flux y React native
React, Flux y React native
 
UNTAGGED.DAY #1 . Seguimiento de aplicaciones con Firebase_GA4
UNTAGGED.DAY #1 . Seguimiento de aplicaciones con Firebase_GA4UNTAGGED.DAY #1 . Seguimiento de aplicaciones con Firebase_GA4
UNTAGGED.DAY #1 . Seguimiento de aplicaciones con Firebase_GA4
 
Empezando con Angular 2
Empezando con Angular 2Empezando con Angular 2
Empezando con Angular 2
 
Codemotion 2015 - Unit Testing
Codemotion 2015 - Unit TestingCodemotion 2015 - Unit Testing
Codemotion 2015 - Unit Testing
 
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos AiresPresentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++
 
Azure web apps deep dive
Azure web apps   deep diveAzure web apps   deep dive
Azure web apps deep dive
 

Primeros pasos con aurelia

  • 1. Primeros pasos con Aurelia Jose Angel Parreño (@j8seangel) Raúl Requero Garcia (@rrequero)MADRID · NOV 27-28 · 2015
  • 2. MADRID · NOV 27-28 · 2015 ¿Quien somos? Raúl Requero Fullstack developer @rrequero Jose Angel Parreño Frontend developer @j8seangel
  • 3. MADRID · NOV 27-28 · 2015 Índice - Que es Aurelia - Características - Entorno de desarrollo - Flujo de ejecución y ejemplos
  • 4. MADRID · NOV 27-28 · 2015 ¿Que es Aurelia? "Aurelia is a next generation JavaScript client framework that leverages simple conventions to empower your creativity." Rob Eisenberg
  • 5. MADRID · NOV 27-28 · 2015 Características ● Poca abstracción ● Inyección de dependencias ● Adaptative binding ● Extendible ● No tiene dependencias externas ● Routing ● Buena documentación y ejemplos
  • 6. MADRID · NOV 27-28 · 2015 Entorno
  • 7. MADRID · NOV 27-28 · 2015 Demo https://github.com/rrequero/primeros _pasos_con_aurelia_talk
  • 8. MADRID · NOV 27-28 · 2015 Scaffolding
  • 9. MADRID · NOV 27-28 · 2015 Ejecución 1 - index.html
  • 10. MADRID · NOV 27-28 · 2015 Ejecución 2 - main.js
  • 11. MADRID · NOV 27-28 · 2015 Ejecución 3 - app.js
  • 12. MADRID · NOV 27-28 · 2015 Ejecución 4 - app.js(2)
  • 13. MADRID · NOV 27-28 · 2015 Ejecución 5 - app.html
  • 14. MADRID · NOV 27-28 · 2015 Ejecución 6 - pantallas - Navigation lifecycle : - canActivate - activate - canDeactivate - deactivate
  • 15. MADRID · NOV 27-28 · 2015 Ejecución 7 - listado - Por convención irá a cargar el <moduleId>.js y <moduleId>.html del moduleId. - Todos los métodos y atributos definidos en la clase están disponibles en la vista.
  • 16. MADRID · NOV 27-28 · 2015 Ejecución 8 - template - String interpolation: ${varName} - Resources: - repeat.for=”elem in array” - $index, $first, $last, $even, $odd - if.bind / show.bind - click.trigger / delegate - route-href=”route: “name”, params.bind;”{}””
  • 17. MADRID · NOV 27-28 · 2015 Ejecución 9 - data binding - select: value.bind for.bind=”option in options” - radio/checkbox: value.bind checked.bind - innerhtml: innerhtml.bind - textcontent: textcontent.bind (1 way) - contenteditable = “true” (2 ways) - inline-styles: styles.bind=”varName”
  • 18. MADRID · NOV 27-28 · 2015 Custom elements - definición - Podemos crear tags html como un “web- component”. - Por convención: - class <name>CustomElement - Por configuración: - @customElement('example')
  • 19. MADRID · NOV 27-28 · 2015 Custom elements - configuración - Para compartir información: - @bindable <name> - Por convención buscará una template y js con el mismo nombre - Por configuración: - @useView(‘path’) - @noView()
  • 20. MADRID · NOV 27-28 · 2015 Custom elements - uso - Para poder utilizar el custom element en una template necesitamos importarla: - Una vez importada la utilizamos como un elemento más:
  • 21. MADRID · NOV 27-28 · 2015 Custom attributes - configuración - Añaden nuevo comportamiento a elementos HTML o custom elements. - Por convención: - class <name>CustomAttribute - Por configuración: - @customAttribute('example')
  • 22. MADRID · NOV 27-28 · 2015 Custom attributes - uso - Para poder utilizar el custom element en una template necesitamos importarla: - Una vez importada la utilizamos como un elemento más:
  • 23. MADRID · NOV 27-28 · 2015 Http-fetch-client - Módulo de aurelia que usa la implementación fetch API. - Permite: - Añadir/eliminar headers - Definir baseUrl - Interceptors
  • 24. MADRID · NOV 27-28 · 2015 Http-fetch-client - ejemplo
  • 25. MADRID · NOV 27-28 · 2015 ¡¡¡ GRACIAS !!!

Notas del editor

  1. A principios de 2014 Rob Eisenberg pasa a ser parte del equipo de desarrollo de Angular 2, pero después de nueves meses (Noviembre) decide salir para posteriormente anunciar en Enero de 2015 Aurelia
  2. http://blog.durandal.io/2015/01/26/introducing-aurelia/ porque todo son clases de ES6 y no es necesario saber controladores,servicios… como angular alta cohesión y bajo acoplamiento 1-2way always with observe with polyfill ie9+ basado en un core simple, añadiendo funcionalidades mediantes módulos y plugins Buen sistema de routing que veremos mas adelante Enseñar la documentación C
  3. Hablar de jspm (ventajas) no es sólo para descargar paquetes, sino que además incluye systemJs (cargador de modulos ES, commonjs, AMD) Babel transpilador para ES6 Gulp automatizador de tareas mejorando el rendimiento del uso de memoria y la velocidad
  4. Esta basado en el ejemplo de aurelia
  5. Explicar los distintos ficheros
  6. System.js es nuestro cargador de módulos basado en estándares ES6. Config.js contiene la configuración de dicho cargador, y es un archivo autogenerado por jspm donde se define las rutas de cada una de las dependencias (dónde ir a buscar cada uno de los imports en el código) Aurelia bootstrapper cargará la configuración por defecto y arrancará la aplicación de aurelia según convención. Buscará en el html el atributo aurelia-app que le indicará cuál es el módulo donde está definido el inicio de la aplicación.
  7. En este fichero definimos la configuración de la aplicación, podremos hacerlo según la convención, o podremos definirlo manualmente como en el ejemplo. Aurelia-animator-css plugin para agregar animaciones, por ejemplo en las transiciones del router. El método .start() cargará la aplicación y una vez ejecutada la promesa le decimos a aurelia por dónde empezar: nuestra primera pantalla y el router.
  8. Definimos la configuración de todas las pantallas (rutas) a través del método configureRouter. Para cada uno de ellos definimos: el path el nombre de la ruta el nombre del fichero js que cargará si queremos que sea registrada en el modelo de navegación, es decir se registra en el objeto router.navigation donde tenemos disponibles todas las rutas el título de la pantalla
  9. importamos los módulos inject: nos proporciona la anotación @inject que nos permite inyectar las instancias de los objetos y estos estarán disponibles en el constructor httpClient es la librería que nos permite hacer llamadas asíncronas a servidor. al importarlo tenemos la posibilidad de inyectarlo. gracias al inject tenemos la posibilidad de especificar que objetos queremos injectar en nuestra clase y las tendremos disponibles parámetros en el constructor configuramos de forma global el objeto http que se utilizará en todas las llamadas asíncronas, en este caso la url base de todas las llamadas.
  10. Template: es un html de template Require: carga el html del elemento custom nav-bar.html carga el css de bootstrap Usamos el elemento nav-bar importado y pasamos el parámetro router bindado con el definido en la clase app Router-view es el contenedor donde se irán metiendo cada uno de los templates de las pantallas.
  11. Primer método ejecutado al instanciar una pantalla, es de utilidad para comprobar credenciales, etc.. si devolvemos false no podremos acceder a la pantalla. Segundo método en el ciclo en el que se utiliza para hacer las llamadas asíncronas y tener los datos disponibles una vez que se renderice la pantalla. Devuelves una promesa que una vez resuelta entrará en el propio estado. Lo mismo para salir, por ejemplo: no has guardado los datos del formulario.. Se llamará a este método si el canDeactivate y no saldremos del estado hasta que las promesas no hayan sido resueltas.
  12. defaultBindingMode: ONE_WAY
  13. defaultBindingMode: ONE_WAY
  14. Funciones para modificar la request y la response Encapsula XMLHTTPRequest
  15. registers = ruta method = metodo http (get,post...) body = contenido enviado data = respuesta