De cierta manera, este patrón es exclusivamente renderizado por el servidor. No hicimos nada más que añadir algunos oyentes de eventos aquí. No estamos usando ninguna biblioteca JavaScript, no hay sobrecarga de la biblioteca, y podemos tener una bonita mejora progresiva sin ningún cambio de diseño, lo cual es genial para un core web vitals también.
Hay algunos web components que construí en la naturaleza que reutilizan este patrón de alguna manera. Hay un componente de detalles utils que construí para añadir comportamientos adicionales a tus elementos de resumen detallados en tu página. Y puedes ir y revisar ese componente si estás interesado en él. Este solo añade un comportamiento para cerrar el elemento de detalles cuando haces clic fuera de él.
En este ejemplo, tengo un componente de video radio star que solo reproduce un elemento de video en la página cuando es visible, lo cual creo que es un buen patrón, especialmente cuando no necesariamente quieres reproducir todo el camino antes de que el usuario incluso se encuentre con ellos en la página. Así que queremos autoplay, pero solo cuando el usuario se desplaza hasta él. De esta manera, estamos mejorando el HTML existente que es el hijo de nuestro web component.
Y otro ejemplo que tengo aquí en mi Github es un componente is lan. Y ahora Astro es un componente muy popular framework, o un framework popular que realmente depende mucho de las islas architecture, que es solo una especie de carga perezosa picante, elegante, lo cual sé que es quizás una cosa controversial que decir, pero lo diré de todos modos. Así que sí, hay un componente web is land que hace algo muy similar. Así que cualquier web components que estén anidados dentro de este componente is land solo se inicializan cuando son visibles para el usuario final, lo cual creo que es genial. Y hay un montón de diferentes mecanismos para eso también. Puedes hacerlo solo cuando está inactivo, puedes hacerlo cuando se habilita el ahorro de data, puedes hacer bajo consultas de medios, o solo cuando el usuario ha interactuado con él.
Ahora, el problema con este patrón aquí es que todo el contenido dentro de nuestro web componente se repite de alguna manera. Así que la experiencia de autoría no es genial, porque realmente no queremos tener que anidar todo este HTML repetido a lo largo de todo nuestro contenido. Así que mi queja número uno probablemente con este patrón es que tengo que duplicar este HTML yo mismo, a menos que tenga una biblioteca o framework existente en la parte superior para hacerlo por mí. Y no me gusta repetirme. Y no me gusta repetirme. Así que cuando tenemos tres instancias de contador en la página, esta es la clase de experiencia de autoría de lo que esperaría o lo que querría hacer. Quiero las cosas únicas dentro de las instancias del componente. No quiero ninguna cosa repetida que tenga que gestionar yo mismo.
Así que para hacer eso, tenemos que graduarnos a un nivel dos de Web Components y empezar a usar ShadowDOM. Así que ShadowDOM es una forma de tener una plantilla reutilizable que puedes inyectarte en JavaScript. Y esto es lo que podría parecer. Así que tenemos un elemento de plantilla en nuestra página. Tenemos nuestro botón dentro de él. Tenemos nuestra ranura.
Comments