Componentes Web, Lit y Santa 🎅

Rate this content
Bookmark

Comienza con los Componentes Web, que te permiten definir nuevos elementos HTML que funcionan en todas partes donde funciona el HTML regular. Esta charla se centrará en Lit, una suite de Google que te ayuda a crear Componentes Web con características que esperarías, como la vinculación de datos y definiciones declarativas. También se hablará de cómo los hemos utilizado para construir uno de los sitios más alegres de la web, el Rastreador de Santa de Google 🎅

This talk has been presented at JSNation Live 2021, check out the latest edition of this JavaScript Conference.

FAQ

Santa Tracker es una aplicación que permite seguir a Santa durante la temporada navideña. El líder del proyecto ha estado involucrado en él durante cinco o seis años.

Los componentes web son una tecnología que permite a los desarrolladores crear sus propios elementos HTML personalizados, funcionando como elementos HTML regulares. Estos pueden incluir funcionalidades y estilos encapsulados, haciendo uso del shadow DOM para aislamiento y personalización.

Lit es una biblioteca muy opinada proporcionada por Google, diseñada para la creación de componentes web. Ofrece ventajas como la vinculación de datos y es ideal para empezar a escribir componentes web de manera eficiente.

Santa Tracker utiliza Web Components para gestionar la estructura y el diseño del sitio, mostrando nuevas tecnologías y admitiendo código heredado. También utiliza LitElement para muchos de sus componentes, facilitando el desarrollo y la gestión del sitio.

El shadow DOM es una parte de los componentes web que permite encapsular y aislar el HTML y los estilos dentro de un componente, evitando que los estilos se filtren y afecten a otros elementos del DOM global.

Los componentes web ofrecen encapsulación, reutilización de código y aislamiento de estilos, lo que permite a los desarrolladores crear elementos personalizados y reutilizables que se integran bien en cualquier proyecto web sin interferencias de estilo o comportamiento.

Sam Thorogood
Sam Thorogood
28 min
11 Jun, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Se presentan los Componentes Web y la biblioteca Lit, destacando su capacidad para crear elementos personalizados y replicar componentes integrados con funcionalidades diferentes. Se enfatiza el uso de HTML semántico y los beneficios de los Componentes Web en el desarrollo. Se discuten las características de Lit, como la vinculación de datos y el renderizado. Se muestra el Rastreador de Santa como ejemplo de uso de Componentes Web en juegos educativos. Se resalta la compatibilidad de los Componentes Web con otros frameworks y su versatilidad para crear pequeños widgets o aplicaciones grandes.

1. Introducción a los componentes web y la biblioteca Lit

Short description:

Hola, mi nombre es Sam y hoy estoy aquí para hablar sobre los componentes web, la biblioteca Lit y Santa Tracker. En primer lugar, vamos a hablar sobre los componentes web. Así que vamos a tener un poco de contexto sobre los elementos y las páginas. Los componentes web, fundamentalmente, nos permiten escribir nuestros propios elementos. Estos son ciudadanos de primera clase que funcionan como elementos HTML regulares. Los objetivos de esta charla son introducirte a los componentes web y sus partes, y aprender sobre Lit, una biblioteca de componentes web muy opinada que Google proporciona.

y Santa Tracker. Pero primero, un poco de contexto sobre mí. Tengo la suerte de ser el líder de Santa Tracker. Es algo que he estado haciendo durante cinco o seis años. Afortunadamente, no tengo que hacerlo todo el año, solo durante unos meses alrededor de la temporada navideña. De lo contrario, me volvería loco, solo para dejarlo claro. También trabajo en sitios de contenido como web.dev y developer.chrome.com.

Personalmente, ¿qué me gusta? Me gusta empujar los límites, hacer cosas extrañas en la web. Puedes leer mi blog si tienes curiosidad por saber más. Y también tengo algunas cosas que no me gustan. Me gusta construir sitios web de una manera muy rápida y creo que las grandes construcciones, durante el desarrollo, realmente te ralentizan. Me encantaría ver un proceso de desarrollo mucho más rápido y creo que muchas herramientas ahora ayudan a apoyar eso.

En primer lugar, vamos a hablar sobre los componentes web. Así que vamos a tener un poco de contexto sobre los elementos y las páginas. Ahora, todos sabemos que las páginas HTML están compuestas por diferentes elementos. Estos pueden ser elementos semánticos que en su mayoría solo afectan al estilo y también son importantes para cosas como lectores de pantalla, y también un poco de semántica para ti como desarrollador, cosas como encabezado y sección. Pero también pueden ser elementos que tienen funcionalidad, cosas como A y button, y elementos como diálogo y detalles, y versiones más avanzadas de esos que tienen un estado que cambia. Los componentes web, fundamentalmente, cuando se trata de eso, nos permiten escribir nuestros propios elementos. Estos son ciudadanos de primera clase que funcionan como elementos HTML regulares. Voy a hablar sobre un ejemplo de mis detalles, al que llegaré en breve.

Entonces, ¿cuáles son los objetivos de esta charla? Quiero que te introduzcas a los componentes web y sus partes. Esta es una charla bastante general. Quiero dejar eso claro. Pasaremos por alto algunas cosas más sutiles, que, con suerte, te señalaré en la dirección correcta para que puedas obtener más información. Quiero que aprendas sobre Lit, una biblioteca de componentes web muy opinada que Google proporciona, que es realmente el mejor lugar para comenzar a escribir componentes web. Y también estaría muy contento si abres Santa Tracker en otra pestaña y haces clic en diferentes partes y juegas algunos juegos e intentas descubrir qué juegos y qué partes del sitio están ejecutados con componentes web. Así que hablemos de los detalles. Los detalles son un elemento muy interesante que mencioné antes. Tiene muchas funcionalidades. Si no lo has visto antes en acción, lo que hace es mostrar el texto del resumen, que es la cosa de arriba aquí, y solo muestra la descripción en forma más larga cuando haces clic en ese resumen.

2. Creando un Componente Web Personalizado de Detalles

Short description:

Quiero escribir mis detalles como un componente web que se abre hacia arriba. Es un ejemplo poderoso de cómo los componentes web pueden reproducir un componente incorporado pero con una funcionalidad diferente. Al definir el HTML interno de la sombra y agregar comportamiento, podemos crear este elemento sin costo adicional de biblioteca. Es interoperable con navegadores modernos y fundamentalmente indistinguible del elemento de detalles regular. Los componentes web tienen acceso al ciclo de vida del elemento, lo que nos permite saber cuándo se crea, agrega o elimina un elemento de la página.

Tiene mucho sentido y es muy útil. Quiero escribir mis detalles. Ahora, esto será muy similar al elemento de detalles regular, pero con una diferencia clave. Así es como se verá como un componente web. No puede verse exactamente igual. Tenemos que usar esta cosa de ranura aquí, pero mencionaré cómo funciona más adelante.

Entonces, la diferencia fundamental de mis detalles en comparación con los detalles es que estos detalles deben abrirse hacia arriba. Esto puede que no sea lo más importante en la web, pero pensé que era un ejemplo bastante lindo para mostrar lo poderosos que son los componentes web, que puedo reproducir un componente incorporado, un pequeño widget lindo, pero hacer algo completamente diferente. Así que quiero explicar cómo funciona esto. Fundamentalmente, creamos esta clase aquí y luego definimos su HTML interno de algo llamado sombra, a lo que llegaré un poco más tarde. Creo un poco de código aquí. Luego, obtengo algunas referencias a algunos elementos dentro de esa sombra y agrego algo de comportamiento.

Ahora, este comportamiento es bastante estándar. Cuando hago clic en este elemento aquí, quiero que el otro contenido cambie de estado. Por lo tanto, voy a abrir y cerrar este elemento haciéndolo visible o no visible, y también voy a cambiar la representación de emoji según si el elemento está abierto o no. Hemos construido este pequeño elemento genial y la mejor parte para mí es que no tiene costo adicional de biblioteca. Obviamente, el elemento tiene un poco de código que debe ejecutarse, pero no te cuesta nada más. No hay biblioteca que adjuntar, descargar o incluir. Y todos los navegadores modernos, aproximadamente el 95% de todos los navegadores hoy en día, admiten esto de forma nativa. Esto es algo que puedes usar directamente. La siguiente mejor parte es que esto es simplemente una forma estándar de interoperabilidad. Resulta que mis detalles, si hacemos un poco más de trabajo para que sea un poco más pulido, serán fundamentalmente indistinguibles del elemento de detalles regular. Nada de lo que uses realmente debería importar si son mis detalles o detalles. Por supuesto, tiene una funcionalidad diferente, pero, ya sabes, se ve, se siente, sabe, hace cuac, cualquier metáfora que te guste. Exactamente igual que cualquier otra cosa. Estos elementos son como HTML. Y la razón por la que son como HTML es porque tenemos acceso a estos dos componentes básicos de los componentes web. En primer lugar, tenemos acceso al ciclo de vida del elemento. Sabemos cuándo se crea un elemento, eso está en el constructor. Sabemos cuándo se agrega o se elimina de la página.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Lo Bueno, Lo Malo, y Los Componentes Web
JSNation 2023JSNation 2023
29 min
Lo Bueno, Lo Malo, y Los Componentes Web
Top Content
Web Components are a piece of reusable UI enabled by web standards and built into the web platform. They offer the potential for faster component initialization and less library overhead. Web Components can be created from scratch and utilized with existing component libraries. Shadow DOM and Declarative Shadow DOM provide benefits such as scoped CSS and server-rendered components. The tradeoff between not repeating oneself and achieving full server-side rendering support is discussed. User experience is deemed more important than developer experience.
Es hora de desfragmentar la web
React Day Berlin 2022React Day Berlin 2022
34 min
Es hora de desfragmentar la web
Top Content
Today's Talk introduces Mitosis, an open source project that solves the problem of building framework agnostic components. It supports JSX and Svelte syntax and outputs human-readable code for various web frameworks. Mitosis is already being used by enterprise customers and can be easily integrated with React, Svelte, and other frameworks. It saves time, allows for easy handling of framework version migrations, and enables efficient unit and integration testing.
Autoría de HTML en un Mundo JavaScript
React Summit US 2023React Summit US 2023
21 min
Autoría de HTML en un Mundo JavaScript
This Talk by Tony Alicia focuses on authoring HTML in a JavaScript world. The speaker challenges developers to change their approach to building React components by starting with HTML first. By authoring HTML in a semantic way, readability and maintainability can be improved. Well-authored HTML provides better understanding of content and improves accessibility. It also has performance benefits by reducing DOM size. Investing time in HTML can save time and make applications more future-proof.
Aplicaciones Web Inmutables
JSNation 2022JSNation 2022
20 min
Aplicaciones Web Inmutables
Today's Talk discusses immutable web apps and their benefits, such as faster loading times and easy version tracking. The use of Universal Module Definition (UMD) style bundling allows for flexible dependency management and gradual upgrades. Tools like Webpack and Rollup provide ways to reference UMDs in bundles and automate dependency configuration. Arborist and YAML files help resolve dependency trees and handle conflicts, while the Orchard CLI tool automates dependency ordering. Internal and external dependencies can be initialized and managed effectively for optimal performance.
¡Los componentes web son increíbles!
JSNation 2022JSNation 2022
10 min
¡Los componentes web son increíbles!
Web components allow you to create your own HTML elements that can do anything you want, and they are supported by all modern browsers. Many companies, including YouTube and GitHub, use web components to enhance their websites. There are extensive tooling and libraries available for web component development. The Model Viewer Web Component enables the display of 3D models in Virtual and Augmented Reality without needing to know underlying technologies. Web components can be used with various frameworks and libraries, and there are resources available to help with compatibility.
Hablemos de los Componentes Web
React Advanced 2021React Advanced 2021
32 min
Hablemos de los Componentes Web
Web Components are a suite of technologies that allow you to create reusable HTML elements, combining the fun of React with regular HTML. Custom elements and the shadow DOM are key features of Web Components, allowing you to define new elements, encapsulate functionality and styles, and interact with a separate DOM. HTML templates serve as placeholders for content to be rendered later in custom components. Custom elements and HTML templates are cross-framework compatible and can be used in React, Angular, Vue, or any other framework.

Workshops on related topic

Despliega una aplicación de componentes web y configura un flujo de integración continua
DevOps.js Conf 2022DevOps.js Conf 2022
111 min
Despliega una aplicación de componentes web y configura un flujo de integración continua
Workshop
Philippe Ozil
Philippe Ozil
Únete a nosotros en un masterclass en el que desplegarás una aplicación Node.js simple construida con componentes web y configurarás un flujo de integración continua (CI). Aprenderás sobre el poder del Lightning Web Runtime (LWR) y las GitHub Actions.
Componentes Web en Acción
JSNation Live 2021JSNation Live 2021
184 min
Componentes Web en Acción
Workshop
Joren Broekema
Alex Korzhikov
2 authors
El masterclass amplía el conocimiento del lenguaje de programación JavaScript, revisa los patrones generales de diseño de software. Se centra en los estándares y tecnologías de los Componentes Web, como Lit-HTML y Lit-Element. También practicamos la escritura de Componentes Web tanto con JavaScript nativo como con Lit-Element. Al final, revisamos las herramientas clave para desarrollar una aplicación: open-wc.