# data[].attributes.body
Hay varias librerías que están construidas sobre componentes web con el objetivo de aumentar el nivel de abstracción al crear elementos personalizados. Cuatro de las bibliotecas más importantes son: X-Tag, Slim.js, Polymer y Bosonic.
Dos de ellos, Bosonic y Polymer, proporcionan componentes listos para usar. Estos componentes se pueden utilizar indistintamente, ya que todos ellos están construidos con tecnologías web abiertas.

# data[].attributes.body
Los componentes web fueron introducidos por Alex Russell en la conferencia Fronteers Conference de 2011.
Polymer, una biblioteca basada en componentes web, fue liberada por Google en 2013.

# data[].attributes.body
Los componentes web son un conjunto de características que actualmente están siendo añadidas por el W3C a las especificaciones HTML y DOM de forma que permite la creación de widgets o componentes reutilizables en documentos y aplicaciones web.

# data[].attributes.body
Elementos personalizados - APIs para definir elementos HTML nuevos.

Sombra DOM - DOM y estilos encapsulados, con composición.

Importaciones de HTML - Métodos declarativos para importar documentos HTML a otros documentos.

Plantillas de HTML - El elemento <template> que permite que los documentos contengan trozos inertes del DOM.

# data[].attributes.body
La plantilla HTML es una forma de crear fragmentos de inserción de HTML que se usan a voluntad. La sintaxis de las plantillas HTML tiene este aspecto:

<html>
    <template>
        <p>The HTML you wish to instantiate on will</p>
    </template>
</html>

# data[].attributes.body
HTML import es una herramienta para incluir documentos HTML y componentes web de fuentes externas sin necesidad de utilizar peticiones AJAX y métodos similares.

La sintaxis para hacer una importación HTML es la siguiente:

<link rel="import" href="mydocument.html">

# data[].attributes.body
Shadow DOM es una funcionalidad que permite al navegador web renderizar elementos DOM sin necesidad de insertarlos en el árbol principal DOM del documento. Esto crea una barrera entre lo que el desarrollador y el navegador pueden alcanzar; el desarrollador no puede acceder al Shadow DOM de la misma manera que lo haría con los elementos anidados, mientras que el navegador puede renderizar y modificar ese código de la misma manera que lo haría con los elementos anidados.

# data[].attributes.body
Hay dos tipos de elementos personalizados: autónomos e integrados. Los elementos personalizados autónomos son elementos HTML completamente diferenciados de los elementos HTML nativos, se construyen esencialmente desde abajo hacia arriba utilizando la API de elementos personalizados. Los elementos personalizados integrados son elementos que se construyen sobre elementos HTML nativos para reutilizar su funcionalidad.