Los desarrolladores usan marcos de trabajo de JavaScript como React y Angular para hacer piezas web que se pueden usar de nuevo.1 Pero, cada uno usa reglas distintas, lo que hace difícil reutilizar el código en otros proyectos.1 Los web components son piezas de HTML que se pueden usar una y otra vez. Trabajan bien con todos los marcos de trabajo y los creó el W3C en 2012.2 Ahora, los navegadores más comunes los soportan.2 Estos componentes permiten poner todo lo que una pieza necesite dentro de ella. Esto incluye diseño, escritura especial y comportamiento, así se pueden usar en muchas webs y aplicaciones diferentes.
Aspectos Clave
- Los web components se basan en estándares web como Custom Elements, Shadow DOM, ES Modules y HTML Templates.1
- Permiten crear componentes personalizados con comportamiento y apariencia única, reutilizables en múltiples aplicaciones.2
- Son compatibles con la mayoría de navegadores modernos, aunque en algunos casos pueden requerir polyfills.2
- Facilitan el mantenimiento y escalabilidad de aplicaciones web al encapsular funcionalidades en componentes independientes.1
- Pueden ser implementados en el desarrollo de micro frontends en plataformas como Modyo.2
¿Qué son los Web Components?
Los web components son como piezas de Lego en el mundo digital. Son códigos que cubren el diseño interno de partes HTML. Esto incluye el estilo con CSS y las interacciones por JavaScript. Así, se pueden reutilizar fácilmente en diferentes páginas web y apps.3
Fueron creados por expertos del World Wide Web Consortium, conocido como el W3C. Se basan en cuatro reglas principales: Custom Elements, Shadow DOM, ES Modules y HTML Templates.3 Cualquier navegador actual ya los entiende y funcionan bien con distintas herramientas de programación web.3
Beneficios de Utilizar Web Components
Reutilización de Código
Frameworks populares como Angular o jQuery son útiles. Pero, no siempre son fáciles de reutilizar en varios proyectos.3
El W3C ha creado los web components para resolver esto. Ofrecen un método universal para reutilizar HTML, CSS y JavaScript.3
Esto hace que el código sea fácil de compartir. Los web components tienen una sintaxis simple. Eso es bueno para programadores nuevos.
Encapsulación
Los web components tienen ventajas importantes. Promueven la reutilización y la encapsulación del código.3
Con esta encapsulación, se pueden crear componentes personalizados. Tienen su propio estilo y función. Esto hace que el mantenimiento y la modularidad sean más fáciles en las aplicaciones web.
Compatibilidad con Frameworks
Una ventaja clave de los web components es que funcionan con cualquier framework.3
Esto significa que los componentes creados son reutilizables en varios proyectos. No importa qué framework uses, los web components serán compatibles.
Tecnologías que Componen los Web Components
Los web components utilizan técnicas avanzadas. Principalmente, incluyen Custom Elements, Shadow DOM, ES Modules y HTML Templates.3 Custom Elements son etiquetas especiales que guardan dentro suyo HTML, CSS y scripts.3 Shadow DOM oculta partes del código, mostrando solo lo que se debe ver.3 ES Modules ayudan a organizar y compartir código JavaScript entre archivos.3 Por último, las HTML Templates se usan para crear contenido web prediseñado, listo para ser usado.
Uniendo todas estas herramientas, los web components permiten desarrollar piezas únicas de página. Estos componentes se comportan y ven como quieras.
Custom Elements
Los Custom Elements son esenciales para los web components. Nos permiten crear nuestras propias etiquetas en HTML. Esto se logra con JavaScript y el método define.3
Shadow DOM
El Shadow DOM protege el código de nuestros componentes. Escondiéndolo del exterior, solo mostramos lo necesario.3
ES Modules
ES Modules simplifican compartir funciones, objetos o datos entre diferentes partes de nuestra aplicación.3
HTML Templates
Las HTML Templates dejan preparado contenido sin mostrarlo. Este material espera hasta que se le llame para ser usado.3
Introducción a Web Components: Reutilización de Código en Frontend
Los web components ayudan a reutilizar código de HTML, CSS y JavaScript. Se basan en estándares web.2 Esto hace que el desarrollo sea más fácil y los componentes sean independientes. Así, no causan problemas al usarlos en varios lugares.2 Estos componentes se ajustan a estándares web y funcionan bien en la mayoría de navegadores nuevos. Aunque, en navegadores antiguos, pueden necesitar polyfills o herramientas especiales.
Tecnología | Descripción |
---|---|
Custom Elements | Etiquetas HTML personalizadas que encapsulan contenido HTML, incluyendo CSS y scripts.4 |
Shadow DOM | Permite añadir árboles DOM ocultos a un árbol de documentos, de forma que solo sea visible la etiqueta HTML del Shadow DOM.4 |
ES Modules | Módulos que exportan objetos, funciones o variables desde un archivo de JavaScript.4 |
HTML Templates | Plantillas de archivos HTML que se mantienen inactivas y sin renderizar hasta que sean solicitadas explícitamente.4 |
Al usar las tecnologías anteriores, los web components dejan crear componentes nuevos. Tienen un diseño y funcionamiento únicos.2
Ciclo de Vida de un Web Component
Un web component pasa por cuatro etapas claves. La primera es Defined, cuando se registra su custom element4. Luego viene el constructor(), donde se crea la lógica del componente4. connectedCallback() se llama cuando se añade al documento, y disconnectedCallback() cuando se quita4. También hay adoptedCallback(), para cuando cambia de documento, y attributeChangedCallback(), que monitorea cambios en sus atributos4.
Defined
Cuando se registra el custom element con window.customElements.define(), entra en el estado Defined.4
constructor()
El constructor() permite preparar el componente. Aquí se inicia el Shadow DOM y se establece su función principal.4
connectedCallback()
Al agregar el componente al documento, se activa su connectedCallback(). Es útil para tareas al inicio y mostrar contenido.4
disconnectedCallback()
Cuando el componente se quita del documento, se activa disconnectedCallback(). Sirve para limpieza final o detener procesos.4
Creando un Web Component Sencillo
Empezamos creando una clase especial. Esta clase extiende de HTMLElement.4 Ayuda a mantener juntas las partes HTML, CSS y JavaScript de nuestro componente. Así, se hace fácil ponerlo en cualquier web.
En esta clase, usamos algo llamado Shadow DOM.4 Es como un mundo privado para nuestro componente, donde no hay peligro de que otros estilos lo arruinen.
Hay funciones especiales, como connectedCallback() y disconnectedCallback().4 Ellas nos ayudan a arreglar nuestro componente cuando este se conecta o desconecta de la ventana. No olvidemos que podemos hacer más cosas, como mostrar o cambiar texto, usando otras funciones a nuestro alcance.4
Para terminar, debemos registrar nuestro componente. Lo hacemos con la función window.customElements.define().4 Al hacer esto, nuestro componente se comporta como cualquier otro HTML en la web. Y así, compartimos nuestro código de una manera ordenada y eficaz.
Herencia y Extensión de Web Components
Para no repetir código en los web components, heredar y extender componentes es útil. Se construye una clase base llamada «Schema».4 Esta clase incluye funciones que se usan mucho y se comparten. Luego, creamos nuevos componentes web basados en esta clase.
Así, los nuevos componentes obtienen toda la funcionalidad ya lista. Solo se añade la lógica que les es propia. Esto hace más fácil el mantener y reusar código.
Extendiendo componentes mediante ‘extends’ permite compartir funciones entre componentes. Se reduce el código duplicado, lo que simplifica el mantenimiento.4 Además, se pueden usar setters y getters para acceder y modificar propiedades fácilmente.4
Ventajas de la Herencia y Extensión de Web Components |
---|
|
Usar herencia y extensión en web components ayuda a crear una base fuerte de componentes que se pueden reusar. Ahorra tiempo y esfuerzo al desarrollar aplicaciones web.34
Interactuando con Web Components
Con los web components, puedes definir cómo cambiar y leer las propiedades. Se usan setters para actualizar cosas como el texto mostrado.4 Mientras que los getters te permiten mirar el valor de las propiedades.4 Suena útil, ¿no? Además, pueden lanzar eventos personalizados. Estos eventos ayudan a decirle a otras partes cuando algo ha cambiado o ha pasado algo importante.5 Así, hacer que los web components trabajen bien con el resto de la web es más fácil.
Setters y Getters
Imagina cambiar el texto de un componente web. Usas un setter para hacerlo. O, por ejemplo, usas un getter para ver el color del fondo.4 Esta forma de interactuar se llama interacción bidireccional. Ayuda a que los web components se integren bien en sitios web grandes.4
Eventos Personalizados
Además de cambiar y leer propiedades, también pueden enviar mensajes especiales. Estos mensajes dicen algo ha cambiado o pasado.5 Ayudan a que diferentes partes de un sitio web trabajen bien juntas. Mejoran cómo se organiza y conecta el código de un sitio web.
Herramientas para Desarrollo de Web Components
El desarrollo de los web components es más fácil gracias a herramientas como Polymer y Stencil.2 Polymer, de Google, hace simple crear estos componentes y tiene muchas funciones.2 Stencil, en cambio, se centra en ser eficiente y rápido.2
Polymer
Polymer, de Google, facilita hacer web components.2 Ofrece muchas características y hace el proceso más sencillo.2
Stencil
Stencil se destaca por ser eficiente y rápido.2 Es más ligero que Polymer y produce código optimizado sin necesitar más cosas.2
Las dos herramientas, Polymer y Stencil, funcionan en la mayoría de navegadores actuales.2 Pero Polymer necesita polyfills para los navegadores viejos.2 La decisión de usar Polymer o Stencil depende de lo que más necesite el proyecto. Es importante considerar madurez, tamaño, dependencias y rendimiento.2
En Modyo, los web components son útiles en los micro frontends con herramientas como Stencil o Lit.2 Pero en sitios más simples manejados por Modyo, podrían existir limitaciones para usar web components. En esos casos, se pueden emplear alternativas como Snippets de Liquid y variables para hacer elementos reutilizables en plataformas con capacidad SSR.2
Implementación de Web Components en Modyo
En Modyo, los web components son fáciles de agregar en micro frontends. Estas herramientas usan tecnologías JavaScript comunes. Esto hace simple la integración de librerías como Stencil o Lit.2
Para proyectos más pequeños en Modyo, usar web components puede ser complicado. Esto pasa porque trabajan con HTML estático generado desde el servidor.2
Una solución es aprovechar el server-side rendering (SSR) de Modyo. Con Snippets de Liquid y variables, se pueden crear elementos reutilizables fácilmente. Esto ayuda a solucionar problemas de manera eficiente y sostenible.2
Fecha | 06-09-2019 |
---|---|
Beneficios de Implementar Web Components |
|
Enfoques de integración |
|
Estilo | Bibliotecas de componentes compartidos |
Desventajas |
|
Implementar web components en Modyo podría tener desafíos. No obstante, ofrece soluciones fáciles y sostenibles con SSR y Liquid.26
Soporte y Compatibilidad de Navegadores
Los web components tienen respaldo de estándares web. Son amigos de los navegadores modernos.2 Aún así, para los navegadores viejos, necesitarás polyfills o herramientas extra. Esto es para asegurar que funcionen bien.2
Chromey otros (como Firefox, Safari y Edge) soportan tecnologías clave de web components. Estas incluyen custom elements, shadow DOM y más.3 Con el aumento del uso de estos estándares, los web components se hacen más fáciles de usar.7
Es importante saber que todas las versiones actuales de los grandes navegadores apoyan web components.7 También, hay bibliotecas como Lit. Añaden más funciones sin aumentar mucho el tamaño del código (solo unos 5KB más).7 Así, usar web components no te hace depender tanto de librerías adicionales.
Así que, el soporte de web components por navegadores modernos es sólido. Esto facilita su uso en desarrollo web.237
Enlaces de origen
- https://tomascornelles.com/blog/2023/introduccion-a-vanilla-web-components/
- https://docs.modyo.com/es/architecture/patterns/web-components.html
- https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/web-components/
- https://www.paradigmadigital.com/dev/crea-tus-primeros-web-components/
- https://portal.gitnation.org/contents/hablemos-de-los-componentes-web
- https://devjaime.medium.com/microfrontend-4eecf1498cd1
- https://desarrolloweb.com/articulos/que-son-web-components.html