HTML5 Web Components

27
HTML 5 Web Components HTML5 Web Components Madrid – 21 y 22 de Noviembre de 2014

description

Lo que subyace bajo lo que denominamos "HTML5" es la conversión en nativo de "frameworks" y/o tecnologías utilizadas a diario. El navegador se convierte así en una aplicación cada vez más potente gracias a que HTML5 cada vez es más poderoso. Los Web Components van en esa línea, haciendo nativo el "templating", los "custom tags" los "import" (los "includes" de otros lenguajes) y el "shadow dom". Y yo con estos pelos... Charla impartida por Luis Calvo en la última edición de Codemotion (Madrid, Spain - Nov 21-22)

Transcript of HTML5 Web Components

Page 1: HTML5 Web Components

HTML 5 Web Components

HTML5

Web Components

Madrid – 21 y 22 de Noviembre de 2014

Page 2: HTML5 Web Components

HTML 5 Web Components

1. Introducción2. Custom Tags3. Shadow Dom4. Templates5. HTML Imports6. Compatibilidad

Índice

Luis Calvo Díaz

Senior Front Developer en Paradigma Tecnológico

@LuisCalvoDiaz

Autor

Page 3: HTML5 Web Components

HTML 5 Web Components

Introducción

Creados a través de una etiqueta (tag)

Incluyen un comportamiento definido

Incluyen una forma de visualización

Page 4: HTML5 Web Components

HTML 5 Web Components

Introducción

Page 5: HTML5 Web Components

HTML 5 Web Components

Introducción

Page 6: HTML5 Web Components

HTML 5 Web Components

Introducción

Page 7: HTML5 Web Components

HTML 5 Web Components

Page 8: HTML5 Web Components

HTML 5 Web Components

Introducción

Page 9: HTML5 Web Components

HTML 5 Web Components

Customs

Tags

HTML Import

s

Templates

Shadow

DOM

Page 10: HTML5 Web Components

HTML 5 Web Components

Customs Tags

HTML 5 Web Components

2

Page 11: HTML5 Web Components

HTML 5 Web Components

Custom Tags

Permite a los desarrolladores definir nuevos elementos

HTML

El nombre del custom tag debe contener al menos un guión (-)

<mi-nuevo-tag></mi-nuevo-tag>

Page 12: HTML5 Web Components

HTML 5 Web Components

Custom Tags

Permite crear nuevos elementos que extienden de otros

elementos

<button is=“mi-nuevo-boton”></button>

https://developer.mozilla.org/en-US/docs/Web/API

Page 13: HTML5 Web Components

HTML 5 Web Components

Custom Tags

o createdCallbackse ha creado una instancia del elemento

o attachedCallbackse ha insertado una instancia del elemento

o detachedCallbackse ha eliminado una instancia del elemento

o attributeChangedCallback(attrName, oldVal, newVal)

Eventos

Page 14: HTML5 Web Components

HTML 5 Web Components

Custom Tags

Dando estilo

Page 15: HTML5 Web Components

HTML 5 Web Components

Shadow DOM

HTML 5 Web Components

3

Page 16: HTML5 Web Components

HTML 5 Web Components

Shadow DOM

Document

Hijo

Hijo

Hijo

Hijo

Hijo

Hijo

Page 17: HTML5 Web Components

HTML 5 Web Components

Shadow DOM give us markup encapsulation, style boundaries, and exposes (to web developers) the same mechanics browser vendors have been using to implement their internal UI

Shadow DOM

Page 18: HTML5 Web Components

HTML 5 Web Components

Shadow DOM

Document

Hijo

Hijo

Shadow host

Hijo

Hijo

Shadow root

Shadow Tree

Document Tree

Page 19: HTML5 Web Components

HTML 5 Web Components

Templates

HTML 5 Web Components

4

Page 20: HTML5 Web Components

HTML 5 Web Components

Templates

<script type="text/template" id="template1"><li><%name%></li>

</script>

<script type="text/x-handlebars-template" id="template2">

<li>{{name}}</li></script>

Page 21: HTML5 Web Components

HTML 5 Web Components

<template id="template1"><li>Contenido</li>

</template>

Templates

El contenido de un template está “inerte” hasta que se activa (scripts, imágenes, audio/vídeo)

El template puede colocarse en cualquier parte y puede contener cualquier tipo de contenido

Page 22: HTML5 Web Components

HTML 5 Web Components

HTML Imports

HTML 5 Web Components

5

Page 23: HTML5 Web Components

HTML 5 Web Components

<iframe src=“miNuevaPagina.html”></iframe>

HTML Imports

<iframe>

var xhr = new XM LHttpRequest();

xhr.open('GET', m iNuevaPagina.htm l', true);

xhr.responseType = 'docum ent';

AJAX

Trabajar con HTML, el componente básico de la web requiere una gran cantidad de esfuerzo

<script src>

<link rel=“stylesheet”>

<img><video

><audio

>

Page 24: HTML5 Web Components

HTML 5 Web Components

<head>

<link rel="import" href="/path/to/imports/stuff.html">

<!– Documentos en otro dominio necesitan CORS-enabled. -->

<link rel="import" href=“http://example.com/elements.html”>

</head>

HTML Imports

Page 25: HTML5 Web Components

HTML 5 Web Components

var link = document.createElement('link');

link.rel = 'import';

link.href = 'file.html'

link.onload = function(e) {...};

link.onerror = function(e) {...};

document.head.appendChild(link);

HTML Imports

Page 26: HTML5 Web Components

HTML 5 Web Components

Soporte en navegadores

Page 27: HTML5 Web Components

HTML 5 Web Components

Recursos

Webcomponents.org -> http://webcomponents.org/

Polymer -> https://www.polymer-project.org/

X-Tag -> http://x-tags.org/

Galeria de Web Components http://customelements.io/ http://component.kitchen/ http://builtwithpolymer.org/