Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

El Proyecto Polymer

1.012 Aufrufe

Veröffentlicht am

La Web está evolucionando a pasos agigantados en los últimos tiempos. Una de las direcciones de avance en este sentido apunta hacia su modularización. En lugar de construir pesadas aplicaciones monolíticas, parece estar más en sintonía con los principios arquitectónicos de la Web hacer un desarrollo dirigido por la construcción de componentes Web sencillos, atómicos y funcionales que fomenten su reutilización transversal y puedan utilizarse como etiquetas de autor personalizadas para articular soluciones elaboradas. Pero más allá de limitarnos a construir componentes Web y utilizarnos de manera conjunta en una página huesped, la orientación a componentes exige encontrar cierto grado de interoperabilidad entre los mismos para ofrecer una sensación de continuidad en su uso al usuario final.

De acuerdo a esta idea, en esta charla comenzaremos haciendo una revisión de la tecnología utilizada para la construcción de componentes Web según las especificaciones estándar de la W3C y del WWG, haciendo uso de la Plataforma de soporte Polymer de Google como implementación nuclear de referencia. Esto nos dará pie para presentar el problema de cómo puede abordarse la construcción de soluciones Web orientadas a componentes para ofrecer niveles de interoperabilidad adecuados. Ofreceremos, en este sentido, algunas soluciones arquitectónicas al respecto y presentaremos ejemplos de su aplicabilidad práctica en contextos realistas.

Veröffentlicht in: Software
  • DOWNLOAD THE BOOK INTO AVAILABLE FORMAT (New Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THE can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THE is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBOOK .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookBOOK, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, EBOOK, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THE Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THE the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THE Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • DOWNLOAD THE BOOK INTO AVAILABLE FORMAT (New Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THE can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THE is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBOOK .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookBOOK, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, EBOOK, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THE Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THE the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THE Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

El Proyecto Polymer

  1. 1. Javier Vélez Reyes @javiervelezreye Javier.velez.reyes@gmail.com El Proyecto Polymer Programación Orientada a Componentes Web Febrero 2015
  2. 2. @javiervelezreye 2 Autor El Proyecto Polymer Licenciado en informá1ca por la UPM desde el año 2001 y doctor en informá1ca por la UNED desde el año 2009, Javier es inves1gador y su línea de trabajo actual se centra en la innovación y desarrollo de tecnologías de Componentes Web. Además realiza ac1vidades de evangelización y divulgación en diversas comunidades IT, es Polymer Polytechnic Speaker y co-organizador del grupo Polymer Spain que conforma una comunidad de interés de ámbito nacional en relación al framework Polymer y a las tecnologías de Componentes Web. I. ¿Quién Soy? II. ¿A Qué Me Dedico? javier.velez.reyes@gmail.com @javiervelezreye linkedin.com/in/javiervelezreyes gplus.to/javiervelezreyes jvelez77 javiervelezreyes youtube.com/user/javiervelezreyes Polymer Polytechnic Speaker Co-organizador de Polymer Spain Evangelización Web Desarrollador JS Full stack Arquitectura Web Formación & Consultoría IT e-learning
  3. 3. Javier Vélez Reyes @javiervelezreye Javier.velez.reyes@gmail.com 1 Introducción §  Qué es un Componente Web §  Por Qué los Componentes Web §  La Web Como Plataforma de Componentes §  Un Nuevo Modelo de Roles Introducción El Proyecto Polymer
  4. 4. @javiervelezreye 4 Introducción El Proyecto Polymer Qué Son Los Componentes Web La tecnología de Componentes Web proporciona un mecanismo para construir nuevas e1quetas de autor personalizadas que incluyen una semán1ca, un comportamiento funcional y una lógica de presentación propia. E1quetas de Autor Componentes Web
  5. 5. @javiervelezreye 5 Introducción El Proyecto Polymer Por Qué Componentes Web Un Componente Web encapsula cierta lógica funcional y presentacional elaborada que se ac1va desde el navegador como una simple e1queta estándar de HTML. Encapsulación De La Lógica Comportamiento AdaptaRvo Los componentes se desarrollan para hacerse responsables de la ges1ón del espacio en el área de presentación, de las necesidades de accesibilidad y las preocupaciones generales de usabilidad. RWD & AWD Accesibilidad Usabilidad
  6. 6. @javiervelezreye 6 Introducción Principios de Diseño en Componentes Web Por Qué Componentes Web Los componentes Web también fomentan un proceso de diseño Web que 1ende a la homogenización lo que desde un punto de vista corpora1vo resulta ventajoso. Homogenización Del diseño GesRón De La Evolución Centralizada La lógica de presentación de los componentes Web se puede adaptar evolu1vamente bajo demanda de las necesidades empresariales sin impactar en el correcto funcionamiento de los aplica1vos y si1os web que hacen uso de los mismos. Restaurante Diversia 9.7 (51) Casa de Campo Puerta del Sol Plaza Mayor Línea evoluDva t1 t2 t3 Los usuarios perciben los cambios instantáneamente v1 v2 v3
  7. 7. @javiervelezreye 7 Introducción El Proyecto Polymer Por Qué Componentes Web La tecnología de componentes Web ofrece la posibilidad de exponer los servicios de una organización en forma de un conjunto de e1quetas visuales que conectan con capacidades de negocio. Orientación A La Vista Construcción ComposiRva Como cualquier otra e1queta estándar los componentes Web pueden conectarse de forma composi1va a través de las relaciones de anidamiento y propagación de eventos que soporta la Web. C R U D Servicios REST HTTP Usuario Programador Usuario Final Los componentes Web están orientación a la vista
  8. 8. @javiervelezreye 8 Introducción El Proyecto Polymer La Web Como Plataforma De Componentes La Web se presenta como una plataforma de hospedaje para una colección de componentes con un comportamiento funcional subyacente que se comunican y coordinan entre si, de acuerdo a diferentes esquemas para ofrecer servicios de valor en el contexto de la página donde se inscriben. Incluye todas las nuevas capacida- des que exDenden la Web como plataforma de orientación a compo- nentes Plataforma Capacidades funcionales sobre la plataforma que simplifican el proceso de desarrollo de Componentes Web Core Aplicaciones orientadas a componentes al servicio de los usuarios de la Web Aplicaciones Componentes estándar dedicados a dar respuesta a necesidades recurrentes de control o UI que surgen en el desarrollo orientado a Componentes Web Elementos
  9. 9. @javiervelezreye 9 Introducción El Proyecto Polymer Un Nuevo Modelo De Roles Conviene señalar que, en el marco de este nuevo proceso de construcción de soluciones para la Web basadas en componentes, se requieren nuevos roles de especialización técnica y flujos de trabajo establecidos. A con1nuación bosquejamos los mismos. Diseñador Web EsDliza los contenidos de acuerdo a directrices presentacionales Maquetador Web Establece la estructura de los contenidos de acuerdo a directrices semánDcas Establece el modelo de comportamiento en reacción a los eventos de interacción del usuario CSS JS En la Web Clásica… .className HTML Programador Web
  10. 10. @javiervelezreye 10 Introducción El Proyecto Polymer Un Nuevo Modelo De Roles Conviene señalar que, en el marco de este nuevo proceso de construcción de soluciones para la Web basadas en componentes, se requieren nuevos roles de especialización técnica y flujos de trabajo establecidos. A con1nuación bosquejamos los mismos. Diseñador de Componentes Define el modelo de rendering del componente de acuerdo a directrices de esDlo Establece la estructura de los contenidos internos que presenta el componente cuando se renderiza Programador de Componentes Establece el modelo de comportamiento subyacente que se acDva cuando se renderiza el componente CSS JS En la Web Orientada a Componentes… <content> .className HTML Maquetador de Componentes
  11. 11. @javiervelezreye 11 Introducción El Proyecto Polymer Un Nuevo Modelo De Roles Conviene señalar que, en el marco de este nuevo proceso de construcción de soluciones para la Web basadas en componentes, se requieren nuevos roles de especialización técnica y flujos de trabajo establecidos. A con1nuación bosquejamos los mismos. CSS JS En la Web Orientada a Componentes… css binding HTML .className Diseñador de Componentes Define el modelo de rendering del componente de acuerdo a directrices de esDlo Establece la estructura de los contenidos internos que presenta el componente cuando se renderiza Programador de Componentes Establece el modelo de comportamiento subyacente que se acDva cuando se renderiza el componente Maquetador de Componentes
  12. 12. Javier Vélez Reyes @javiervelezreye Javier.velez.reyes@gmail.com 2 Estándares En Componentes Web §  Modelo de Encapsulamiento. Shadow DOM §  Modelo de Renderizado. HTML Templates §  Modelo de Extensión. Custom Elements §  Modelo de Modularización. HTML Imports Introducción El Proyecto Polymer
  13. 13. @javiervelezreye 13 Estándares En Componentes Web El Proyecto Polymer 4 Estándares Independientes El modelo de componentes para la Web definido por la W3C consiste en cuatro especificaciones tecnológicamente independientes que cubren dis1ntos aspectos del proceso construc1vo. A lo largo de este capítulo revisaremos los Estándares En Componentes Web que se manejan en relación a tales especificaciones. Shadow DOM Ofrece un modelo de encapsula- miento que permite aislar el contenido interno del componente de aquél en la página donde éste es renderizado HTML Templates Ofrece un modelo de construcción basado en planDllas inertes de código HTML que sólo son acDvadas cuando se renderiza el componente HTML Imports Ofrece un modelo de modulariza- ción basado en la posibilidad de incluir ficheros de código HTML dentro de otros ficheros HTML Custom Elements Ofrece un modelo de extensibilidad que permite a los desarrolladores definir sus propias eDquetas o redefinir semánDcamente las eDquetas del estándar DOM
  14. 14. @javiervelezreye 14 Estándares En Componentes Web El Proyecto Polymer Modelo De Encapsulamiento. Shadow DOM Sin más infraestructura de soporte, los iden1ficadores JS y CSS u1lizados internamente dentro de cada componente podrían colisionar con los usados dentro de la página huésped o en otros componentes residentes. Es necesario proporcionar un mecanismo de encapsulamiento que aísle cada instancia de componente del resto de instancias y de la propia página. El Problema <button id='btn'> <button/> index.html <button id='btn'> <button/> Click Click document.querySelector ('#btn') .on ('click', function () { ... }); document.querySelector ('#btn') .on ('click', function () { ... }); Si usamos dos instancias del mismo Dpo de componente los códigos verDdos a la página anfitriona para cada instancia serán idénDcos y colisionarán entre sí ya que se usan idenDficadores homónimos Colisión de IdenIficadores
  15. 15. @javiervelezreye 15 Estándares En Componentes Web El Proyecto Polymer Modelo De Encapsulamiento. Shadow DOM Es necesario, por tanto, proporcionar un mecanismo de encapsulación que aísle cada instancia de componente del resto de instancias y de la propia página. desde un punto de vista conceptual, es posible clasificar los 1pos de aislamiento necesarios en tres categorías diferentes de acuerdo a la relación de los elementos en potencial conflicto. La Solución Contenido Tipo A .foo .bar Contenido Tipo A .foo .bar Contenido Tipo B .baz .foo Contenido Tipo A .foo .bar index.html index.html Contenido Tipo A .foo .bar .foo index.html Aislamiento entre componentes Aislamiento con la página anfitriona Aislamiento entre instancias
  16. 16. @javiervelezreye 16 Estándares En Componentes Web El Proyecto Polymer Modelo De Encapsulamiento. Shadow DOM El proceso de encapsulación consiste, esencialmente, en generar nuevos árboles DOM para albergar los contenidos de cada instancia de componente Web y vincularlos a ciertos nodos de la página anfitriona. De esta manera se consigue que dichos contenidos residan en un espacio de nombres exclusivo y aislado del de los demás y del de la propia página. Shadow DOM & Shadow HOST Light DOM .shadowRoot Shadow DOM Shadow Host El Shadow Host, que puede ser cualquier eDqueta HTML, es un nodo de la página anfitriona que vincula una instancia de componente a dicha página Shadow Root El Shadow Root es un nodo de Dpo DocumentFragment que se corresponde con la raíz del árbol DOM del contenido encapsulado por el componente .host Componente
  17. 17. @javiervelezreye 17 Estándares En Componentes Web El Proyecto Polymer Modelo De Encapsulamiento. Shadow DOM El proceso de encapsulación consiste, esencialmente, en generar nuevos árboles DOM para albergar los contenidos de cada instancia de componente Web y vincularlos a ciertos nodos de la página anfitriona. De esta manera se consigue que dichos contenidos residan en un espacio de nombres exclusivo y aislado del de los demás y del de la propia página. Shadow DOM & Shadow HOST Light DOM .shadowRoot Shadow DOM .host Componente 1 En los navegadores sin soporte a componentes web se aplica el algoritmo de renderizado habitual. Como el shadow DOM no es accesible por este algoritmo, el componente no se renderiza y se conDnúa por el recorrido habitual Renderizado normal 1 2 Cuando el soporte a componentes web está acDvo, el algoritmo de renderizado discrimina entre nodos normales y nodos shadow host. En éstos úlDmos, deriva el proceso de renderizado para mostrar el contenido del shadow DOM mientras el Light DOM no se muestra Renderizado shadow 2
  18. 18. @javiervelezreye 18 Estándares En Componentes Web El Proyecto Polymer Modelo De Encapsulamiento. Shadow DOM Desde la especificación de Shadow DOM, la única manera de crear esta estructura dual de contenidos es a través de JavaScript. Para ello, se ex1ende el nodo Element con un nuevo método para la creación de nodos Shadow Root que se vinculan automá1camente al nodo sobre el que se aplican convir1éndolo así en un Shadow Host. Shadow DOM & Shadow HOST <div id="myHost"> contenido del light dom </div> <script> var host = document.querySelector('#myHost'); var root = host.createShadowRoot(); root.innerHTML = "contenido del Shadow DOM"; </script> Cualquier Dpo de nodo DOM puede ser converDdo en Shadow Host. Para ello es necesario uDlizar alguno de los mecanismos de referencia disponibles en HTML que permitan seleccionar el nodo desde JavaScript Shadow Host Primero se localiza el nodo que hará de anfitrión y se convierte en shadow host creando en él un nodo shadow root. Después sólo queda inyectar contenido HTML en este nuevo nodo por cualquier mecanismo estándar para crear el Shadow DOM Shadow Root
  19. 19. @javiervelezreye 19 Estándares En Componentes Web El Proyecto Polymer Modelo De Encapsulamiento. Shadow DOM Es posible definir múl1ples árboles en la sombra organizados por capas. El Shadow Host sigue reteniendo un enlace al ShadowRoot más reciente. Desde éste se puede recorrer sucesivamente cada Shadow DOM a través de enlaces olderShadowRoot. Y por úl1mo, cada Shadow Root dispone de una referencia al Shadow Host. Shadow DOM Por Capas Light DOM Página Huésped .olderShadowRoot .host .host .host .shadowRoot .olderShadowRoot Youngest Shadow DOM Oldest Shadow DOM Desde cada Shadow Root se puede acceder al anterior a través de enlaces olderShadowRoot a excepción del úlDmo que Dene un valor null en este enlace Cada Shadow Root manDene una referencia directa (host) al Shadow Host que ancla el componente a la página anfitriona Shadow DOM por Capas Referencia al Shadow Host Recorrido por la cadena de capas
  20. 20. @javiervelezreye 20 Estándares En Componentes Web El Proyecto Polymer Modelo De Encapsulamiento. Shadow DOM Para crear una estructura mul1capa simplemente es necesario invocar repe1damente el método createShadowRoot sobre el nodo Host. Cada vez que se llama a este método se crea un nuevo ShadowRoot que se establece como primera capa de acuerdo a la arquitectura de enlaces anterior. Una vez que se crea un enlace Shadow Root es imposible eliminarlo. Shadow DOM Por Capas <div id="myHost"> contenido del light dom </div> <script> var host = document.querySelector('#myHost'); var root1 = host.createShadowRoot(); var root2 = host.createShadowRoot(); var root3 = host.createShadowRoot(); root1.innerHTML = ... root2.innerHTML = ... root3.innerHTML = ... </script> Igual que antes es necesario hacer uso de alguno de los mecanismos de referencia de HTML para poder acceder al nodo DOM que hará de Shadow Host desde el código JavaScript Shadow Host Cada vez que se invoca al método createShadowRoot se genera un nuevo Shadow DOM que se establece como primera capa dentro de la arquitectura de enlaces Shadow Roots
  21. 21. @javiervelezreye 21 Estándares En Componentes Web El Proyecto Polymer Modelo De Encapsulamiento. Shadow DOM Los componentes Web pueden construirse a través de procesos de anidamiento de manera que un componente interno pueda hospedarse dentro del Shadow DOM de otro componente externo. El papel del modelo de encapsulación en este 1po de escenarios de anidamiento man1ene la garanba de la ausencia de colisión para cada componente par1cipante. Shadow DOM Anidado .shadowRoot .host C. Externo C. Interno .host .shadowRoot El componente externo actúa como anfitrión respecto al componente interno El componente interno actúa como huésped en la relación de anidamiento con el componente externo Rol anfitrión Rol huésped
  22. 22. @javiervelezreye 22 Estándares En Componentes Web El Proyecto Polymer Modelo De Encapsulamiento. Shadow DOM El proceso de creación de componentes anidados requiere iden1ficar el nodo Host del componente externo y crear un Shadow Root donde se inyecta un contenido HTML. Este contenido incluye todo el cuerpo del Light DOM del componente interno. Finalmente es preciso crear un Shadow Root para el componente interno e inyectarle su contenido HTML. Shadow DOM Anidado antes del componente externo <div id="outerHost"> ... </div> después del componente externo <script> var outerHost = document.querySelector('#outerHost'); var outerRoot = outerHost.createShadowRoot(); outerRoot.innerHTML = 'antes del componente interno' + ' <div id="innerHost"> Light DOM interno </div> ' + 'después del componente interno'; var innerHost = outerRoot.querySelector('#innerHost'); var innerRoot = innerHost.createShadowRoot(); innerRoot.innerHTML = 'en el componente interno'; </script> Se idénDca el nodo que servirá de anfitrión para hospedar el componente externo y poder accederlo desde JavaScript Componente externo Primero se crea el Shadow Root del compo- nente externo y se inyectan los contenidos de su Shadow DOM que encapsulan al Light DOM del componente interno. Después se crea el Shadow Root del componente interno y se le inyecta su contenido HTML Anidamiento de componente Interno
  23. 23. @javiervelezreye 23 Estándares En Componentes Web El Proyecto Polymer Modelo De Encapsulamiento. Shadow DOM En componentes simples el Shadow DOM puede requerir acceder de forma discrecional a la información de configuración contenida dentro del Light DOM para que forme parte del proceso de rendering del componente. Gracias a este mecanismo se consigue adaptar el aspecto y comportamiento de cada instancia de componente a su contexto de uso. Distribución De Contenidos Light DOM Shadow DOM Componente El shadow DOM podría necesitarse acceder de forma discrecional a partes de la información Light DOM para arDcular su renderizado. Necesitamos un mecanismo de referencia de información desde el Shadow DOM al Light DOM Referencia de información El Light DOM conDene informa-ción semánDca sobre la configura-ción del componente que permite adaptar su aspecto y comporta- miento Información de configuración .shadowRoot ?
  24. 24. @javiervelezreye 24 Estándares En Componentes Web El Proyecto Polymer Modelo De Encapsulamiento. Shadow DOM En componentes simples el Shadow DOM puede requerir acceder de forma discrecional a la información de configuración contenida dentro del Light DOM para que forme parte del proceso de rendering del componente. Gracias a este mecanismo se consigue adaptar el aspecto y comportamiento de cada instancia de componente a su contexto de uso. Distribución De Contenidos Light DOM Shadow DOM Componente El shadow DOM podría necesitarse acceder de forma discrecional a partes de Punto de Inserción de Contenido Se dice que el conjunto de nodos del Light DOM que se ven afectados por el proceso de selección se distribuyen, durante el renderiza- do, al punto de inserción dentro del Shadow DOM Nodos Distribuidos .shadowRoot <content select='…'>
  25. 25. @javiervelezreye 25 Estándares En Componentes Web El Proyecto Polymer Modelo De Encapsulamiento. Shadow DOM El diseño del Light DOM debe anotarse semán1camente de manera apropiada para que pueda referirse mediante expresiones de selección CSS a par1r de las e1quetas content que figuran dentro del Shadow DOM. Hasta cierto punto puede considerarse que las e1quetas content son un mecanismo de inyección paramétrica de los valores mantenidos por el Light DOM. Distribución De Contenidos <div class="product"> <div class="type">Food</div> <div class="name">Pears</div> </div> <script> var host = document.querySelector('#myHost'); var root = host.createShadowRoot(); root.innerHTML = '<ul>' + ' <li>Type: <content select=".type"></content></li>' + ' <li>Name: <content select=".name"></content></li>' + ' <li>Amount: <content select=".amount">1</content></li>' + '</ul>' </script> El Light DOM conDene la información que va a ser referida desde los puntos de inserción de contenido presentes en el Shadow DOM Light DOM El Shadow DOM conDene puntos de inserción para referir a la información del Light DOM Shadow DOM & Content Select
  26. 26. @javiervelezreye 26 Estándares En Componentes Web El Proyecto Polymer Modelo De Encapsulamiento. Shadow DOM En los escenarios de componentes construidos por capas, es necesario, adicionalmente a lo anterior, disponer de un mecanismo que permita acceder desde cada capa a la información contenida en la inmediatamente inferior. De esta manera, cada capa se concibe como una decoración que contribuye a enriquecer el contenido de la que 1ene por encima. Distribución De Contenidos En La Sombra Es necesario un mecanismo de acceso a los contenidos en la sombra que permita a una capa recuperar el contenido mantenido por la capa inferior Desde cada capa se puede seguir accediendo normalmente a los contenidos en el Light DOM por medio de la eDqueta content Light DOM Acceso a la Capa Inferior Light DOM .shadowRoot Shadow DOM por Capas .olderShadowRoot .olderShadowRoot Nodo de contenido en capa Punto de inserción en la sombra <content> <shadow>
  27. 27. @javiervelezreye 27 Estándares En Componentes Web El Proyecto Polymer Modelo De Encapsulamiento. Shadow DOM De manera similar a la distribución de contenidos existe una e1queta shadow que permite a un shadow DOM capturar todo el contenido del del shadow DOM que se encuentra inmediatamente por debajo de él en la jerarquía de capas. Esta e1queta no dispone sin embargo de filtro select. Distribución De Contenidos En La Sombra <script> ... root1.innerHTML = 'Esta capa está oculta'; root2.innerHTML = 'D. <content select…'; root3.innerHTML = '<div class=".box">' + ' <shadow></shadow>' + '</div>'; </script> Las capas que no tuvieran una referencia <shadow> desde capas superiores no serían incluidas en el proceso de renderizado Existen Capas Ocultas
  28. 28. @javiervelezreye 28 Estándares En Componentes Web El Proyecto Polymer Modelo De Renderizado. HTML Templates No es poco frecuente encontrar situaciones en las que es necesario instanciar dos ocurrencias diferentes de un mismo componente sobre la misma página, aunque sea con light DOM diferentes. ¿Pomo podemos evitar el trabajo de reescribir el shadow DOM entero para cada instancia de forma eficaz y segura? PlanRllas Inertes Y AcRvación De Código Por Clonación Página Huésped <div id=‘A-1’> </div> <div id=‘A-2’> </div> El contenido de los dos subárboles shadow es el mismo puesto que ambas eDquetas responden a instancias disDntas (-1 y -2) del mismo componente A Shadow DOM idénIcos Cada instancia sin embargo conDene unos contenidos semánDcos disDntos dentro del subárbol light que sirven para configurar la misma de forma parDcular Light DOM diferentes
  29. 29. @javiervelezreye 29 Estándares En Componentes Web El Proyecto Polymer Modelo De Renderizado. HTML Templates No es poco frecuente encontrar situaciones en las que es necesario instanciar dos ocurrencias diferentes de un mismo componente sobre la misma página, aunque sea con light DOM diferentes. ¿Pomo podemos evitar el trabajo de reescribir el shadow DOM entero para cada instancia de forma eficaz y segura? PlanRllas Inertes Y AcRvación De Código Por Clonación <template id="news"> <img src=""> <div class="body"></div> </template> <div id="new-1"></div> <div id="new-2"></div> <script> function createNew(container, image, body) { var root = document.querySelector(container).createShadowRoot(); var template = document.querySelection("#news").content; template.querySelector("img").scr = image; template.querySelector(".body").textContent = body; root.appendChild(template.content.cloneNode(true)); } createNew('#new-1', 'imagen1.png', 'noticia 1'); createNew('#new-2', 'imagen2.png', 'noticia 2'); </script> El código de la planDlla se procesa pero la carga de recursos no se produce hasta la acDvación PlanIlla Inerte La acDvación de una planDlla consiste en un proceso de clonación del nodo DOM que manDene los contenidos AcIvación
  30. 30. @javiervelezreye 30 Estándares En Componentes Web El Proyecto Polymer Modelo De Extensión. Custom Tags Ahora que tenemos los mecanismos necesarios para definir y encapsular comportamiento y lógica de presentación personalizada necesitamos una manera de referirlo nominalmente dentro de nuestra página Web en forma de e1quetas personalizadas. Esto permite dis1nguir los componentes de las e1quetas estándar lo que aumenta la legibilidad de la página. Creación De ERquetas Personalizadas. Custom Tags Los nombres de las eDquetas personalizadas deben tener al menos un guión en el nodeName para diferenciarlas de las eDquetas estándar. Regla 1. Nombres con al menos un guión <wc-calendar> ... </wc-calendar> No pueden uDlizarse como nombres de eDquetas personalizadas cualquiera de las cadenas con guión que se enumeran a conDnuación. Regla 2. Nombres reservados annotation-xml color-profile font-face font-face-src font-face-uri font-face-format font-face- name missing-glyph ... <wc-calendar> <wc-calendar-day>12</wc-calendar-day> <wc-calendar-month>06</wc-calendar-month> <wc-calendar-year>2014</wc-calendar-year> </wc-calendar> ...
  31. 31. @javiervelezreye 31 Estándares En Componentes Web El Proyecto Polymer Modelo De Extensión. Custom Tags Debemos preocuparnos, por un lado, de registrar cada componente construido como un nuevo 1po de e1queta dentro del sistema de e1quetas del navegador y después de instanciar componentes tanto desde el lenguaje de marcado como a través de JS. Creación De ERquetas Personalizadas. Custom Tags var p = Object.create(HTMLElement.prototype); p.foo = function (){...}; p.bar = 7; var Foo = document.registerElement( 'wc-foo', {prototype: p}); <wc-foo id="a"> ... </wc-foo> <wc-foo id="b"> ... </wc-foo> var a = new Foo (); var b = document.createElement('wc-foo'); document.body.appendChild (a); document.body.appendChild (b); Registro de un Componente Instanciación de un Componente Primero se crea el protoDpo del componente y se registra como una nueva eDqueta con la función registerElement Creación Una vez creado el componente y registrado como una nueva eDqueta se puede usar como cualquier otra eDqueta estándar Uso
  32. 32. @javiervelezreye 32 Estándares En Componentes Web El Proyecto Polymer Modelo De Extensión. Custom Tags Es posible extender las propias e1quetas del estándar HTML para generar variantes que incluyan nuevo comportamiento o lógica presentacional cuando se rendericen. Estas e1quetas man1enen, naturalmente, el nombre de la e1queta a la que ex1enden pero incluyen un calificador is para indicar al navegador de que se trata de una variante dis1nta. Extensión de ERquetas Estándar. Extended Element Types ... <button id="btn" is="fancy-button"> Ok </button> <p is="lorem-ipsum"><p> ... <script> var btn = document.querySelector(‘#btn’); btn.addEventListener('click', function(e){ ... }); </script> Las eDquetas del estándar se exDenden con variantes cualificadas nominalmente dentro del atributo is. Estas eDquetas manDenen el nombre, métodos y atributos de la eDqueta de la que derivan pero pueden sobrescribir o agregar nuevas capacidades Extensión de EIquetas Estándar La nueva variante de botón incluye, por herencia todos los atributos, métodos y modelo de eventos que Dene la eDqueta base de la que deriva Herencia de Capacidades
  33. 33. @javiervelezreye 33 Estándares En Componentes Web El Proyecto Polymer Modelo De Extensión. Custom Tags De forma similar al caso anterior, comenzaremos por registrar cada componente construido como una variante que ex1ende una e1queta del estándar y después nos ocuparemos de instanciar componentes tanto desde el lenguaje de marcado como a través de JS. Extensión de ERquetas Estándar. Extended Element Types var p = Object.create(HTMLButtonElement.prototype); p.foo = function (){...}; p.bar = 7; var FancyButton = document.registerElement( 'fancy-button', {extends: 'button', prototype: p}); <button is="fancy-button" id="a"> Ok </button> <button is="fancy-button" id="b"> Ok </button> var a = new FancyButton (); var b = document.createElement ('fancy-button'); document.body.appendChild (a); document.body.appendChild (b); Registro de un Componente Instanciación de un Componente En este caso la creación requiere crear un protoDpo que hereda del protoDpo HTMLBuionElement Creación A diferencia de las eDquetas personalizadas, aquí se manDene el nombre de la eDqueta y se cualifica semánDcamente con el atributo is para favorecer el descubrimiento SEO Uso
  34. 34. @javiervelezreye 34 Estándares En Componentes Web El Proyecto Polymer Modelo De Modularización. HTML Imports La implementación de un componente incluye un código de plan1lla inerte, especificaciones de es1lo y no poca lógica de scrip1ng para especificar el modelo de comportamiento. Parece necesario disponer de un mecanismo de modularización que permita incluir todo ese contenido en un fichero de índice a parte HTML que pueda importarte a la página huésped. Importación de documentos HTML <!doctype html> <html lang="es"> <head> <meta charset="utf-8"> <script src="webcomponents.js"></script> <script src="polymer.js"></script> <link rel="import" href="my-lib.html"> </head> <body> ... </body> </html> <!doctype html> <html lang="es"> <head> <link rel="import" href="tag-1.html"> <link rel="import" href="tag-2.html"> <link rel="stylesheet" href="style-1.html"> <link rel="stylesheet" href="style-2.html"> <script src="script-1.js"></script> <script src="script-2.js"></script> </head> <body> <!– codigo del componente --> ... </body> </html> Index.html My-lib.html style-2.css style-1.css script-2.js script-1.js tag-2.html tag-1.html
  35. 35. @javiervelezreye 35 Estándares En Componentes Web El Proyecto Polymer Modelo De Modularización. HTML Imports La implementación de un componente incluye un código de plan1lla inerte, especificaciones de es1lo y no poca lógica de scrip1ng para especificar el modelo de comportamiento. Parece necesario disponer de un mecanismo de modularización que permita incluir todo ese contenido en un fichero de índice a parte HTML que pueda importarte a la página huésped. Acceso al Recurso Importado y a la Página Anfitriona <!doctype html> <html lang="es"> <head> ... <link rel="import" href="file.html"> </head> <body> ... </body> </html> <!doctype html> <html lang="es"> ... <body> <script> var f = document.currentScript.ownerDocument; var h = document; // f refiere a este documento HTML // h refiere a la página huésped </script> </body> </html> Index.html file.html I. Contexto de Anfitrión El contexto en el que se evalúan los script dentro de una página importada es el de la página anfitriona II. Evaluación Secuencial Las importaciones son no bloqueantes. Sin embargo los script dentro de la página importada se ejecutan en orden III. Evaluación Única Las importaciones desde una misma URL son procesadas sólo una vez con lo que sus script sólo se ejecutan una vez
  36. 36. @javiervelezreye 36 Estándares En Componentes Web El Proyecto Polymer Modelo De Modularización. HTML Imports Para controlar los procesos de carga de recursos de documentos HTML importados mediante la direc1va import se pueden inyectar manejadores a eventos de éxito y error. Eventos de Carga y Error <script async> function handleLoad(e) { console.log(‘Loaded import:’ + e.target.href); } function handleError(e) { console.log(‘Error loading import:’ + e.target.href); } </script> <link rel=“import” href=“file.html” onload=“handleLoad(event)” onerror=“handleError(event)”> <head> <link id=“foo-link” rel=“import” href=“wc-foo.html”> </head> <body> ... <script> var link = document.querySelector(‘#foo-link’); var content = link.import; var el = content.querySelector(‘...’); ... </script> </body> El desarrollador 1ene la oportunidad de capturar programá1camente el contenido importado mediante una direc1va import y operar sobre él a conveniencia. Manipulación De Contenidos
  37. 37. Javier Vélez Reyes @javiervelezreye Javier.velez.reyes@gmail.com 3 El Framework Polymer §  Modelo de Componentes Polymer §  Extensiones al Modelo de Plan1llas §  Extensiones al Modelo de Componente Introducción El Proyecto Polymer
  38. 38. @javiervelezreye 38 El Framework Polymer El Proyecto Polymer El Framework Polymer Google ha desarrollado, por encima de la implementación de los estándares de Componentes Web, un framework dirigido a simplificar los procesos de desarrollo con esta tecnología. A lo largo de este capítulo veremos cuales son sus ventajas par1culares. HTML Templates Ofrece un modelo de construcción basado en planDllas inertes de código HTML que sólo son acDvadas cuando se renderiza el componente Custom Elements Ofrece un modelo de extensibilidad que permite a los desarrolladores definir sus p r o p i a s e D q u e t a s o r e d e fi n i r semánDcamente las eDquetas del estándar DOM Modelo de Componente Polymer Data Binding Plan1llas Dinámicas Atributos Ciclo de Vida Observers
  39. 39. @javiervelezreye 39 El Framework Polymer El Proyecto Polymer Modelo De Componentes De Polymer La definición de Componentes Web sin lógica funcional con Polymer es un ejercicio completamente declara1vo mediante la e1queta polymer-element y el modificador noscript. Componentes Web Sin Lógica <script> var host = document.querySelector('#myHost'); var root = host.createShadowRoot(); root.innerHTML = "contenido del Shadow DOM"; </script> Polymer Web Components <polymer-element name="profile-card" noscript> <template> ... </template> </polymer-element> El atributo noscript incluye una lógica de configuración por defecto para los compo-nentes sin lógica funcional
  40. 40. @javiervelezreye 40 El Framework Polymer El Proyecto Polymer Modelo De Componentes De Polymer Cuando el componente 1ene lógica funcional se añade un script que se vincula automá1camente a la plan1lla HTML adjunta sin u1lizar el atributo noscript. Componentes Web Con Lógica <script> var host = document.querySelector('#myHost'); var root = host.createShadowRoot(); root.innerHTML = "contenido del Shadow DOM"; </script> Polymer Web Components <polymer-element name="profile-card"> <template> ... </template> <script> ... </script> </polymer-element> Los componentes con lógica funcional añaden una eDqueta script que opera sobre los contenidos de la planDlla adjunta
  41. 41. @javiervelezreye 41 El Framework Polymer El Proyecto Polymer Modelo De Componentes De Polymer Para definir un Componente Web como extensión de otro componente o de una e1queta estándar basta con usar el par de atributos extends / is. Extensión De Componentes Web var p = Object.create(HTMLButtonElement.prototype); var FancyButton = document.registerElement( 'fancy-button', {extends: 'button', prototype: p}); Polymer Web Components <polymer-element name="fancy-button" extends="button"> ... </polymer-element> <button is="fancy-button"> ... </button> Para declarar un componente como extensión de otro se uDliza el atributo extends en la definición del mismo Después para su uso se uDliza la eDqueta del padre y se cualifica semánDcamente al componente con el atributo is
  42. 42. @javiervelezreye 42 El Framework Polymer El Proyecto Polymer Extensiones Al Modelo De Custom Elements La lógica de comportamiento del componente incluye un modelo de datos, un conjunto de métodos de ciclo de vida y un manejador de cambios de los atributos. Atributos & Ciclo de Vida <polymer-element name="wc-card" attributes="name age"> ... <script> Polymer ('wc-card', { this.name, this.age: 18, created : function () {}, ready : function () {}, attacched : function () {}, domReady : function () {}, detached : function () {}, ... </script> </polymer-element> El modelo de datos se soporta a parDr de la declaración de variables locales. Ojo los Dpos primiDvos operan a nivel de instancia mientras que los objetos a nivel de protoDpo Los manejadores del ciclo de vida permiten incluir código que trata los eventos vinculados a la creación y destrucción de la instancia
  43. 43. @javiervelezreye 43 El Framework Polymer El Proyecto Polymer Extensiones Al Modelo De Custom Elements La lógica de comportamiento del componente incluye un modelo de datos, un conjunto de métodos de ciclo de vida y un manejador de cambios de los atributos. Métodos & Observadores <polymer-element name="wc-card" attributes="name age"> ... <script> ... adult : function (){ return this.age > 18 }, name : function (name){ ... }, age : function (age){ ... }, attributeChanged : function (att, ov, nv){}, nameChanged : function (ovalue, nvalue){}, ageChanged : function (ovalue, nvalue){} }); </script> </polymer-element> Existen dos formas para gesDonar el cambio de valor de los atributos. Se puede usar el método genéDco aiributeChanged o definir maneja- dores de cambio dedicados Los métodos de negocio se incluyen tal cual al protoDpo del componente definido
  44. 44. @javiervelezreye 44 El Framework Polymer El Proyecto Polymer Extensiones Al Modelo De PlanRllas Polymer vincula cada referencia en el contenido de las plan1llas HTML al modelo de datos subyacente de manera que los cambios se propagan automá1camente. Data Binding Bidireccional <polymer-element name="wc-card" attributes="name age"> <template> Hola, mi nombre es {{ name }} y tengo {{ age }} años </template> <script> Polymer ('wc-card') { this.name, this.age: 18, ... } </script> </polymer-element> Los valores de los atributos del modelo de datos se propagan a la vista de manera automáDca Asimismo, las referencias sobre elementos de edición HTML que causan cambios en los atributos provocan actualizaciones en el modelo subyacente. <polymer-element name="wc-card" attributes="name age"> <template> Hola, mi nombre es {{ name }} y tengo {{ age }} años </template> <script> Polymer ('wc-card') { this.name, this.age: 18, ... } </script> </polymer-element> Recíprocamente los cambios sobre los atributos que se producen sobre la vista a c t u a l i z a n e l m o d e l o subyacente
  45. 45. @javiervelezreye 45 El Framework Polymer El Proyecto Polymer Extensiones Al Modelo De PlanRllas Polymer ex1ende la e1queta template para dotarla de capacidades de renderizado dinámico. A con1nuación describimos las principales capacidades. PlanRllas Dinámicas Enlace a Texto <p>{{user.name}}</p> Enlace a Atributo <img src="{{image}}" alt="imagen"> Manejador de Evento Estándar <button on-click="{{doClick}}"> Ok </button> Enlace a Atributo Condicional <div class="card" hidden?="{{show}}" Manejador de Evento de Negocio <div id="my-component" on-done="{{doAlarm}}"> ... </div> Enlace con Operador Condicional <template repeat="{{item, i in items}}"> <div class="{{(i%2==0)? 'on' : 'off'}}"> {{item}} </div> </template>
  46. 46. @javiervelezreye 46 El Framework Polymer El Proyecto Polymer Extensiones Al Modelo De PlanRllas Polymer ex1ende la e1queta template para dotarla de capacidades de renderizado dinámico. A con1nuación describimos las principales capacidades. PlanRllas Dinámicas PlanIlla de Enlace de Datos <template bind="{{person as me}}"> {{me.name}} – {{me.twitter}} </template> PlanIlla Condicional <template bind="..." if="truthy"> {{me.name}} – {{me.twitter}} </template> PlanIlla IteraIva <template repeat="{{item in items}}"> <li>{{item}}</li> </template> PlanIllas Referidas & Anidadas <template repeat="i in items" id="t"> <li>{{i}} <ul> <template repeat="{{i.hijos}}" ref="t"> </template> </ul> </template> ... <template bind ref="t"> </template> PlanIllas Anidada <template repeat="{{u in users}}"> <template repeat="{{i in u.items}}"> <li>{{i}}</li> </template </template>
  47. 47. Javier Vélez Reyes @javiervelezreye Javier.velez.reyes@gmail.com 4 Ecosistema de Componentes de Polymer §  Componentes Web De Polymer §  Core Elements §  Paper Elements §  Desarrollo de Aplica1vos Basados en Componentes Introducción El Proyecto Polymer
  48. 48. @javiervelezreye 48 Ecosistema de Componentes de Polymer El Proyecto Polymer Componentes Web De Polymer Google ha desarrollado, por encima de la implementación de los estándares de Componentes Web, un framework dirigido a simplificar los procesos de desarrollo con esta tecnología. A lo largo de este capítulo veremos cuales son sus ventajas par1culares. Core Elements Los componentes core-element de Polymer dan soporte a capacidades nucleares relacionadas con la gesDón de la lógica de presentación de componentes Web Paper Elements Los componentes paper-element de Polymer se encargan de arDcular el modelo de presentación basado en Material Design propio de Google
  49. 49. @javiervelezreye 49 Ecosistema de Componentes de Polymer El Proyecto Polymer Core Elements Con Polymer es posible crear aplicaciones por composición de componentes Web. Core header panel es un contenedor simple con una sección de cabecera y otra de contenido. Core Header Panel Core Drawer Panel El componente core-header-panel es un contenedor responsive que combina un menú lateral deslizante con un área de contenido principal. <core-header-panel mode="scroll" flex> <core-toolbar> <core-icon-button icon="menu"> </core-icon-button> <div>MY APP</div> </core-toolbar> <div class="content">...</div> </core-header-panel> MY APP <core-drawer-panel> <div drawer> Drawer panel... </div> <div main> Main panel... </div> </core-drawer-panel>
  50. 50. @javiervelezreye 50 Ecosistema de Componentes de Polymer El Proyecto Polymer Paper Elements Polymer también ofrece una amplia librería de componentes que implementan las normas de es1lo de Material Design. Paper-checkbox es un ejemplo de ello. Paper Checkbox Paper Input Paper-input es un componente que sus1tuye a la e1queta estándar input de HTML ofreciendo un comportamiento más dinámico y mayor riqueza en la experiencia de usuario. <paper-checkbox> ... </paper-checkbox> <paper-input label="Nombre"> ... </paper-input>
  51. 51. @javiervelezreye 51 Ecosistema de Componentes de Polymer El Proyecto Polymer Desarrollo de AplicaRvos Basados en Componentes Parámetros de configuración wc-bus <Timeline <zoom >next >previous >go >zoom-in >zoom-out zoom-in, zoom-out, go go zoom-in, zoom-out wc-slides wc-video wc-speech El desarrollo de aplicaciones orientadas a Componentes Web requiere de cierta infraestructura de control dedicada a ar1cular procesos de coordinación y orquestación entre los componentes cons1tuyentes. Esta lógica puede encapsularse en componentes de control reu1lizables. Veamos un ejemplo.
  52. 52. @javiervelezreye 52 Preguntas El Proyecto Polymer Javier Vélez Reyes @javiervelezreye Javier.velez.reyes@gmail.com El Framework Polymer Estándares de Componentes Web El Ecosistema de Componentes
  53. 53. Javier Vélez Reyes @javiervelezreye Javier.velez.reyes@gmail.com El Proyecto Polymer Programación Orientada a Componentes Web Febrero 2015

×