SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
1Just another brick in the wall?
Polymer
¿Donde estamos?
Web components by W3C
Conjunto de standars, algunos en borrador.
Polymer es una implementación de web components by Google.
¿Donde estamos?
Versión 0.5.4
Se estima 1.0 para mediados - finales de este año.
Se esperan cambios importantes en la 0.8.
“Sin grandes problemas” en navegadores
Todo es un elemento
Creciente complejidad de aplicaciones webs.
Los elementos actuales no cubren las necesidades.
Creación de elementos propios con los que componer aplicaciones web:
Funcionales, reusables, configurables, anidables, encapsulados…
entre otras cosas.
Enfoque declarativo.
Mi primer polymer
Polymer Time!
Creando
shine-on.html
Importacion Polymer
Definición del polymer
Template (Opcional)
Script (Opcional): Función
Polymer y definición del
prototipo.
<link rel="import" href=“polymer.html”>
<polymer-element name=“shine-on”

attributes=“adjetive name”>

</polymer-element>
<template>

Shine on you {{adjetive}} {{name}}

</template>
<script>

Polymer({

adjetive: “crazy”,

name: “diamond”

});

</script>
Reutilizando
demo.html
Imports
webcomponents.js (Polyfills)
Elementos a usar
Instanciacion
Instanciación con paso de
argumentos
<script src=“webcomponents.js”>

</script>
<link rel="import" href=“shine-on.html">
<shine-on>

</shine-on>
<shine-on 

adjetive=“little” 

name=“wing”>

</shine-on>
Extendiendo
shine-extended.html
Importaciones:
Polymer
Elemento a extender
Elemento que extiende
Template (Opcional)
Script
<link rel="import" href=“polymer.html">

<link rel="import" href=“shine-on.html">
<polymer-element 

name=“shine-extended” 

extends=“shine-on”

attributes=“author”>

</polymer-element>
<template>

<shadow></shadow>

by {{author}}

</template>
<script>

Polymer({

author: “Pink Floyd”

});

</script>
Reutilizando
extensión
demo-extended.html
Imports
webcomponents.js (Polyfills)
Elementos a usar
Instanciacion
Instanciación con paso de
argumentos
<script src=“webcomponents.js”>

</script>
<link rel="import" href=“shine-
extended.html">
<shine-extended>

</shine-extended>
<shine-extended 

adjetive=“little” 

name=“wing”

author=“Jimi Hendrix">

</shine-extended>
API del elemento
Atributos
Mecanismo de entrada/
salida
Se definen en 

“attributes”
<polymer-element name=“element-name”

attributes=“attr1 attr2 attr3”>

…

</polymer-element>
Métodos
Llamadas desde dentro
Al dispararse eventos del
dom
Desde otros métodos
En callbacks de polymer
…
<polymer-element name=“my-element”>

<script>

Polymer({

sayHello: function(){

console.log(“Hey You!!”);

}

});

</script>

</polymer-element>
Métodos
Llamadas desde fuera
obteniendo el elemento:
Polymer way (dentro de un
polymer y mediante ID):



this.$.accessme.sayHello()
Cualquier otro modo
(QuerySelector… etc)
<my-polymer id=“accessme”>

</my-polymer>

<polymer-element name=“my-polymer”>

<script>

Polymer({

sayHello: function(){

console.log(“Hey You!!”);

}

});

</script>

</polymer-element>
Templates
Light DOM / Shadow DOM
Light DOM: Accesible y visible
<polymer-element name=“template-example”>
<template>
<content><!— Light DOM—></content>
I’m the dark side! <!— Shadow DOM —>
</template>
<script> Polymer({}); </script>
</polymer-element>
…
<template-example>
Hi!, I’m a light DOM fragment! <!— Light DOM —>
</template-example>
Shadow DOM: Encapsulado en subtrees del DOM no accesibles
CSS, así si!
La etiqueta template crea un
subtree de shadow DOM con
su contexto propio,
encapsulando los CSS
<polymer-element name=“my-element”>

<template>

<!— Styles on shadow DOM 

are scoped on this context —>

<style>

div{ color: red; }

</style>

<content></content>

<div>RED</div>

</template>

<script>Polymer({});</script>

</polymer-element>
CSS, así si!
Los estilos externos no son
aplicados dentro del shadow
dom. En cambio los internos si,
sin colisionar con los externos.
Cada elemento tiene su propio
contexto css.
Se puee saltar esta barrera con
/deep/ y :shadow en el css.
HTML:

<styles>

div{ color: green; }

</styles>

<my-element>

<div> GREEN </div>

</my-element>

Render:

GREEN

RED
Binding y condicionales
Polymer permite asociar objetos JavaScript al contexto de un template.
Los objetos y expresiones usados dentro de los templates se escriben {{así}}
Los templates pueden anidarse



greatSongs=[ {title: “Losing my religion”, author: “REM”}, 

{title: “Wish you were here”, author: “Pink Floyd”}, 

{title: “Rey sombra”, author: “Los Planetas”} ];

















Repeat
<template repeat=“{{song, index in greatSongs}}”>

{{song.title}},

</template>
Losing my religion, Wish
you were here, Rey
sombra,
If
<template repeat=“{{song in greatSongs}}”>

<template if=“{{ song.author == ‘REM’ }}”> {{song.title}} </template>

</template>
Losing my religion
Single
<template repeat=“{{song in greatSongs}}”>

<template bind=“{{song}}”> {{author}}, </template>

</template>
REM, Pink Floyd, Los
Planetas
Polymer con las
pilas puestas
Engines ON
Algunas facilidades y helpers
Mixins: permite reutilizar funcionalidad entre diferentes polymers agregando esta funcionalidad en los prototipos:



var mixinIt = { sayHello: function(){ console.log(“Hello guys!”) } } // Mixin



Polymer( // Inside a polymer element script 

Polymer.mixin( { // Element prototype as usual }, mixinIt ) 

)
Imports: Permiten importar polymers dinamicamente:

Polymer.import(polymer-urls, callback);
Callbacks del ciclo de vida: Polymer, a lo largo de su ciclo de vida pasa por varios estados en los que podemos definir
callbacks.
Filters: Pueden ser llamados desde el DOM del polymer mediante un “|”:

…

{{value | getSquare}} <!— En el DOM —>

…



//En el script

etSquare: function(value){

return value*value;

}
Callbacks del ciclo de vida
Estado de creación:
created: cuando se crea el elemento. Conviene inicializar los objetos y arrays en este punto.
ready: El elemento está listo (no necesariamente el DOM que este encapsula).
domReady: El DOM está listo.
Estado de indexación al DOM:
attached: Se ha añadido el elemento al DOM general.
detached: El elemento se desvincula del DOM
Cambios en atributos:
attributeNameChanged: Cambios en un atributo (Algunas limitaciones al observar objetos
complejos a varios niveles)
Todo lo que ya
está hecho
Core elements
Paper elements
Core elements
Elementos con bastante funcionalidad y mas enfocados en acciones que requieren mas
programación. Ejemplos:
core-ajax: puede ser usado para realizar llamadas ajax, tratar la respuesta, etc de una
forma fácil y declarativa.
core-scaffold: Componente que agrega otros componentes a su vex (core-menu, core-
toolbar… ) y permite implementar un menú responsive, compatible con swipe en
móviles.
core-animations: para usar web animations.
core-list: Implementa un alista infinita virtual.
Paper elements
Los paper elements son polymers mas enfocados a la presentación,
elementos gráficos como botones, sliders…
paper-checkbox
paper-dialog
paper-spinner
paper-toggle
Algunos de estos elementos usan son extensiones y/o composiciones de
otros, usan mixins… lo que viene detallado en la documentación oficial:
¿Pordonde
sigo?
blog.polymer-project.org polymer-project.org
@addyosmani @ebidel@rob_dodson
PREGUNTAS
luis.recio@medianet.es
@recluising
Thanks a lot!

Más contenido relacionado

Destacado

Polymer Recruiting Slides (00000002)
Polymer Recruiting Slides (00000002)Polymer Recruiting Slides (00000002)
Polymer Recruiting Slides (00000002)Melanie Bryan Heusser
 
MSEASUSlides: Muddiest Points: Polymers I - Introduction
MSEASUSlides: Muddiest Points:  Polymers I - IntroductionMSEASUSlides: Muddiest Points:  Polymers I - Introduction
MSEASUSlides: Muddiest Points: Polymers I - Introductionmseasuslides
 
POLYMERS : PLASTICS AND THERMOPLASTICS
POLYMERS : PLASTICS AND THERMOPLASTICSPOLYMERS : PLASTICS AND THERMOPLASTICS
POLYMERS : PLASTICS AND THERMOPLASTICSSahil Nagpal
 
Thermosetting, thermoplastics and elastomers
Thermosetting, thermoplastics and elastomersThermosetting, thermoplastics and elastomers
Thermosetting, thermoplastics and elastomershelena_23_12
 
Thermoplastics : Introduction,classification,Processing & applications
Thermoplastics : Introduction,classification,Processing & applicationsThermoplastics : Introduction,classification,Processing & applications
Thermoplastics : Introduction,classification,Processing & applicationsPratik Chaudhari
 
Estructura del suelo
Estructura del sueloEstructura del suelo
Estructura del sueloKAtiRojChu
 

Destacado (8)

Polymer Recruiting Slides (00000002)
Polymer Recruiting Slides (00000002)Polymer Recruiting Slides (00000002)
Polymer Recruiting Slides (00000002)
 
New Materials
New MaterialsNew Materials
New Materials
 
MSEASUSlides: Muddiest Points: Polymers I - Introduction
MSEASUSlides: Muddiest Points:  Polymers I - IntroductionMSEASUSlides: Muddiest Points:  Polymers I - Introduction
MSEASUSlides: Muddiest Points: Polymers I - Introduction
 
POLYMERS : PLASTICS AND THERMOPLASTICS
POLYMERS : PLASTICS AND THERMOPLASTICSPOLYMERS : PLASTICS AND THERMOPLASTICS
POLYMERS : PLASTICS AND THERMOPLASTICS
 
THERMOSETTING PLASTICS
THERMOSETTING PLASTICSTHERMOSETTING PLASTICS
THERMOSETTING PLASTICS
 
Thermosetting, thermoplastics and elastomers
Thermosetting, thermoplastics and elastomersThermosetting, thermoplastics and elastomers
Thermosetting, thermoplastics and elastomers
 
Thermoplastics : Introduction,classification,Processing & applications
Thermoplastics : Introduction,classification,Processing & applicationsThermoplastics : Introduction,classification,Processing & applications
Thermoplastics : Introduction,classification,Processing & applications
 
Estructura del suelo
Estructura del sueloEstructura del suelo
Estructura del suelo
 

Similar a Kit polymer en Medianet Software

Polymer de un vistazo
Polymer de un vistazoPolymer de un vistazo
Polymer de un vistazoLuis Recio
 
Esencia de Web Components
Esencia de Web ComponentsEsencia de Web Components
Esencia de Web ComponentsPedro J. Molina
 
Esencia de web components
Esencia de web componentsEsencia de web components
Esencia de web componentsPedro J. Molina
 
An evening with... Polymer Intro Meetup
An evening with... Polymer Intro MeetupAn evening with... Polymer Intro Meetup
An evening with... Polymer Intro MeetupArkhotech
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netAlberto Diaz Martin
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETAlberto Diaz Martin
 
Trucos y consejos rendimiento Xamarin.Forms
Trucos y consejos rendimiento Xamarin.FormsTrucos y consejos rendimiento Xamarin.Forms
Trucos y consejos rendimiento Xamarin.FormsJavier Suárez Ruiz
 
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
 
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y ValidacionesDesarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y ValidacionesDidier Granados
 
Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......SaulSalinasNeri
 
DotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsDotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsJavier Suárez Ruiz
 
DotNet 2019 | Javier Suarez - Optimizando Apps con Xamarin Forms
DotNet 2019 | Javier Suarez - Optimizando Apps con Xamarin FormsDotNet 2019 | Javier Suarez - Optimizando Apps con Xamarin Forms
DotNet 2019 | Javier Suarez - Optimizando Apps con Xamarin FormsPlain Concepts
 
Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...
Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...
Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...SergioIglesiasNET
 
Versión inicial presentación Android Studio y Gradle. .
Versión inicial presentación Android Studio y Gradle. . Versión inicial presentación Android Studio y Gradle. .
Versión inicial presentación Android Studio y Gradle. . Kamil Zabdyr
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...Miguel Ángel Sánchez Chordi
 

Similar a Kit polymer en Medianet Software (20)

Polymer de un vistazo
Polymer de un vistazoPolymer de un vistazo
Polymer de un vistazo
 
Esencia de Web Components
Esencia de Web ComponentsEsencia de Web Components
Esencia de Web Components
 
Esencia de web components
Esencia de web componentsEsencia de web components
Esencia de web components
 
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
 
An evening with... Polymer Intro Meetup
An evening with... Polymer Intro MeetupAn evening with... Polymer Intro Meetup
An evening with... Polymer Intro Meetup
 
Clase 8 Manipulación del DOM
Clase 8 Manipulación del DOMClase 8 Manipulación del DOM
Clase 8 Manipulación del DOM
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NET
 
Trucos y consejos rendimiento Xamarin.Forms
Trucos y consejos rendimiento Xamarin.FormsTrucos y consejos rendimiento Xamarin.Forms
Trucos y consejos rendimiento Xamarin.Forms
 
Angular Fundamentals
Angular FundamentalsAngular Fundamentals
Angular Fundamentals
 
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
 
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y ValidacionesDesarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
Desarrollo de Aplicaciones Web II - Sesión 03 - Formularios y Validaciones
 
Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......
 
DotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsDotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.Forms
 
DotNet 2019 | Javier Suarez - Optimizando Apps con Xamarin Forms
DotNet 2019 | Javier Suarez - Optimizando Apps con Xamarin FormsDotNet 2019 | Javier Suarez - Optimizando Apps con Xamarin Forms
DotNet 2019 | Javier Suarez - Optimizando Apps con Xamarin Forms
 
Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...
Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...
Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...
 
Versión inicial presentación Android Studio y Gradle. .
Versión inicial presentación Android Studio y Gradle. . Versión inicial presentación Android Studio y Gradle. .
Versión inicial presentación Android Studio y Gradle. .
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
 
Cliente/Servidor
Cliente/ServidorCliente/Servidor
Cliente/Servidor
 

Último

Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 

Último (7)

Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 

Kit polymer en Medianet Software

  • 1. 1Just another brick in the wall? Polymer
  • 2. ¿Donde estamos? Web components by W3C Conjunto de standars, algunos en borrador. Polymer es una implementación de web components by Google.
  • 3. ¿Donde estamos? Versión 0.5.4 Se estima 1.0 para mediados - finales de este año. Se esperan cambios importantes en la 0.8. “Sin grandes problemas” en navegadores
  • 4. Todo es un elemento Creciente complejidad de aplicaciones webs. Los elementos actuales no cubren las necesidades. Creación de elementos propios con los que componer aplicaciones web: Funcionales, reusables, configurables, anidables, encapsulados… entre otras cosas. Enfoque declarativo.
  • 6. Creando shine-on.html Importacion Polymer Definición del polymer Template (Opcional) Script (Opcional): Función Polymer y definición del prototipo. <link rel="import" href=“polymer.html”> <polymer-element name=“shine-on” attributes=“adjetive name”> </polymer-element> <template> Shine on you {{adjetive}} {{name}} </template> <script> Polymer({ adjetive: “crazy”, name: “diamond” }); </script>
  • 7. Reutilizando demo.html Imports webcomponents.js (Polyfills) Elementos a usar Instanciacion Instanciación con paso de argumentos <script src=“webcomponents.js”> </script> <link rel="import" href=“shine-on.html"> <shine-on> </shine-on> <shine-on adjetive=“little” name=“wing”> </shine-on>
  • 8. Extendiendo shine-extended.html Importaciones: Polymer Elemento a extender Elemento que extiende Template (Opcional) Script <link rel="import" href=“polymer.html"> <link rel="import" href=“shine-on.html"> <polymer-element name=“shine-extended” extends=“shine-on” attributes=“author”> </polymer-element> <template> <shadow></shadow> by {{author}} </template> <script> Polymer({ author: “Pink Floyd” }); </script>
  • 9. Reutilizando extensión demo-extended.html Imports webcomponents.js (Polyfills) Elementos a usar Instanciacion Instanciación con paso de argumentos <script src=“webcomponents.js”> </script> <link rel="import" href=“shine- extended.html"> <shine-extended> </shine-extended> <shine-extended adjetive=“little” name=“wing” author=“Jimi Hendrix"> </shine-extended>
  • 11. Atributos Mecanismo de entrada/ salida Se definen en 
 “attributes” <polymer-element name=“element-name” attributes=“attr1 attr2 attr3”> … </polymer-element>
  • 12. Métodos Llamadas desde dentro Al dispararse eventos del dom Desde otros métodos En callbacks de polymer … <polymer-element name=“my-element”> <script> Polymer({ sayHello: function(){ console.log(“Hey You!!”); } }); </script> </polymer-element>
  • 13. Métodos Llamadas desde fuera obteniendo el elemento: Polymer way (dentro de un polymer y mediante ID):
 
 this.$.accessme.sayHello() Cualquier otro modo (QuerySelector… etc) <my-polymer id=“accessme”> </my-polymer> <polymer-element name=“my-polymer”> <script> Polymer({ sayHello: function(){ console.log(“Hey You!!”); } }); </script> </polymer-element>
  • 14. Templates Light DOM / Shadow DOM
  • 15. Light DOM: Accesible y visible <polymer-element name=“template-example”> <template> <content><!— Light DOM—></content> I’m the dark side! <!— Shadow DOM —> </template> <script> Polymer({}); </script> </polymer-element> … <template-example> Hi!, I’m a light DOM fragment! <!— Light DOM —> </template-example> Shadow DOM: Encapsulado en subtrees del DOM no accesibles
  • 16. CSS, así si! La etiqueta template crea un subtree de shadow DOM con su contexto propio, encapsulando los CSS <polymer-element name=“my-element”> <template> <!— Styles on shadow DOM are scoped on this context —> <style> div{ color: red; } </style> <content></content> <div>RED</div> </template> <script>Polymer({});</script> </polymer-element>
  • 17. CSS, así si! Los estilos externos no son aplicados dentro del shadow dom. En cambio los internos si, sin colisionar con los externos. Cada elemento tiene su propio contexto css. Se puee saltar esta barrera con /deep/ y :shadow en el css. HTML: <styles> div{ color: green; } </styles> <my-element> <div> GREEN </div> </my-element> Render: GREEN RED
  • 18. Binding y condicionales Polymer permite asociar objetos JavaScript al contexto de un template. Los objetos y expresiones usados dentro de los templates se escriben {{así}} Los templates pueden anidarse
 
 greatSongs=[ {title: “Losing my religion”, author: “REM”}, 
 {title: “Wish you were here”, author: “Pink Floyd”}, 
 {title: “Rey sombra”, author: “Los Planetas”} ];
 
 
 
 
 
 
 
 
 Repeat <template repeat=“{{song, index in greatSongs}}”>
 {{song.title}},
 </template> Losing my religion, Wish you were here, Rey sombra, If <template repeat=“{{song in greatSongs}}”>
 <template if=“{{ song.author == ‘REM’ }}”> {{song.title}} </template>
 </template> Losing my religion Single <template repeat=“{{song in greatSongs}}”>
 <template bind=“{{song}}”> {{author}}, </template>
 </template> REM, Pink Floyd, Los Planetas
  • 19. Polymer con las pilas puestas Engines ON
  • 20. Algunas facilidades y helpers Mixins: permite reutilizar funcionalidad entre diferentes polymers agregando esta funcionalidad en los prototipos:
 
 var mixinIt = { sayHello: function(){ console.log(“Hello guys!”) } } // Mixin
 
 Polymer( // Inside a polymer element script 
 Polymer.mixin( { // Element prototype as usual }, mixinIt ) 
 ) Imports: Permiten importar polymers dinamicamente:
 Polymer.import(polymer-urls, callback); Callbacks del ciclo de vida: Polymer, a lo largo de su ciclo de vida pasa por varios estados en los que podemos definir callbacks. Filters: Pueden ser llamados desde el DOM del polymer mediante un “|”:
 …
 {{value | getSquare}} <!— En el DOM —>
 …
 
 //En el script
 etSquare: function(value){
 return value*value;
 }
  • 21. Callbacks del ciclo de vida Estado de creación: created: cuando se crea el elemento. Conviene inicializar los objetos y arrays en este punto. ready: El elemento está listo (no necesariamente el DOM que este encapsula). domReady: El DOM está listo. Estado de indexación al DOM: attached: Se ha añadido el elemento al DOM general. detached: El elemento se desvincula del DOM Cambios en atributos: attributeNameChanged: Cambios en un atributo (Algunas limitaciones al observar objetos complejos a varios niveles)
  • 22. Todo lo que ya está hecho Core elements Paper elements
  • 23. Core elements Elementos con bastante funcionalidad y mas enfocados en acciones que requieren mas programación. Ejemplos: core-ajax: puede ser usado para realizar llamadas ajax, tratar la respuesta, etc de una forma fácil y declarativa. core-scaffold: Componente que agrega otros componentes a su vex (core-menu, core- toolbar… ) y permite implementar un menú responsive, compatible con swipe en móviles. core-animations: para usar web animations. core-list: Implementa un alista infinita virtual.
  • 24. Paper elements Los paper elements son polymers mas enfocados a la presentación, elementos gráficos como botones, sliders… paper-checkbox paper-dialog paper-spinner paper-toggle
  • 25. Algunos de estos elementos usan son extensiones y/o composiciones de otros, usan mixins… lo que viene detallado en la documentación oficial: