¿Cómo el Shadow DOM te tiene cubierto?

Rate this content
Bookmark

Aprendemos sobre las posibilidades de lo que DOM puede hacer, pero ¿alguna vez te has preguntado qué posibilidades puede tener Shadow DOM? Bueno, en esta charla te ayudaré a entender cómo el Shadow DOM te tiene cubierto. Profundizaremos aún más en cómo puedes usar React con Web Components.  

FAQ

El Shadow DOM es un árbol DOM oculto que difiere en cómo se comporta con respecto al Light DOM, permitiendo encapsular y aislar CSS y JavaScript.

El Shadow DOM permite una mayor encapsulación y componibilidad, no afectando el resto de la página web y teniendo prioridad sobre el Light DOM en ciertos contextos.

La encapsulación en el Shadow DOM asegura que los estilos y scripts definidos dentro de él no afecten ni sean afectados por otros elementos fuera del Shadow DOM.

No, no todos los elementos HTML tienen su propio Shadow DOM. Elementos como div o span no poseen Shadow DOM propio a menos que se les asigne explícitamente.

Se puede crear un Shadow DOM usando la API 'attachShadow' en un elemento, especificando si el modo es 'abierto' o 'cerrado' para controlar la visibilidad del shadow tree.

Los slots son puntos de inserción en un template de Shadow DOM que permiten definir lugares donde se puede insertar contenido dinámicamente en un componente web.

Sí, es posible personalizar el contenido y estilo de los elementos dentro del Shadow DOM, lo que permite una gran flexibilidad y componibilidad en el diseño de componentes web.

La componibilidad se refiere a la capacidad de combinar y reutilizar componentes web de manera modular, cada uno encapsulado en su propio Shadow DOM.

El Shadow DOM interactúa con las APIs del navegador a través de interfaces específicas que reconocen y manipulan los nodos shadow, como la API 'attachShadow'.

Mukul Ramchandani
Mukul Ramchandani
18 min
12 Dec, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

El Shadow DOM permite la encapsulación y la composabilidad, permitiendo que los elementos tengan sus propias características sin afectar al resto de la página web. Los elementos personalizados en el Shadow DOM tienen su propio comportamiento a través de la encapsulación y los estilos de alcance. La composabilidad es clave en el desarrollo de software, permitiendo el paso dinámico de datos. El Shadow DOM proporciona una forma de modificar la apariencia de los elementos dentro de él, pero algunas propiedades están marcadas como importantes y no pueden ser cambiadas. Construir una extensión de Chrome usando el Shadow DOM permite experiencias componibles y encapsuladas.

1. Introducción al Shadow DOM

Short description:

El Shadow DOM es un árbol DOM oculto que se comporta de manera diferente al Light DOM. Permite la encapsulación y la componibilidad, permitiendo que los elementos tengan sus propias características y funciones sin afectar al resto de la página web. El Shadow DOM es diferente del Light DOM en cómo se crea en un elemento específico. Proporciona una forma de encapsular elementos, similar a cómo diferentes porciones de pizza tienen sus propios ingredientes. Esto permite una mejor organización y separación de la funcionalidad.

Entonces, hola a todos. Como pueden ver, el título de la charla es cómo el Shadow DOM te tiene cubierto. No, no te ha cubierto nunca. Te tiene cubierto. Y en la retrospectiva, seguro. Entonces, en esta charla rápida, vamos a ver cómo te tiene cubierto. Así que comencemos con la charla. Entonces, hola a todos. Soy Mukul y estoy trabajando como ingeniero de front-end en Hubilo. Aparte del trabajo, me gusta, soy muy apasionado de la música indie, los juegos de mesa y ¿quién no es apasionado de viajar? Entonces sí, ¿qué es el Shadow DOM? Para definirlo simplemente, es un árbol DOM oculto normal con diferencias en cómo se comporta con el resto del Light DOM. Entonces, dado el contexto de la charla, el DOM con el que interactuamos a diario. Añadimos, anexamos, eliminamos elementos. Es un DOM normal, ¿verdad? Y el DOM del que vamos a hablar, vamos a referirnos a ese DOM normal como un Light DOM y el DOM del que vamos a hablar extensamente es el Shadow DOM. Entonces, como pueden ver en la pantalla, este texto está en el Shadow DOM. Pueden ver que es un texto de marcador de posición, ¿verdad? Cuando intentan inspeccionar esto y cuando intentan averiguarlo, normalmente no encuentran este texto específico escrito en ningún lugar del DOM, pero está presente, muy presente. Está presente en el Shadow DOM. Mientras que este es otro ejemplo, como si ven un botón de elegir archivo, alguien debe haber escrito un botón CSS de él y cómo este elemento debería aparecer en línea y en el código. ¿Qué debería pasar cuando alguien hace clic en el botón de elegir archivo, pero todo lo que hacemos es escribir input type file y luego sucede la magia y este elemento aparece. Pero todo el CSS de esto ha sido escrito en algún lugar en el Shadow DOM. Entonces, sí, vamos a avanzar para saber más sobre el Shadow DOM. Entonces, ¿cómo es diferente del Light DOM? Entonces, como dije, el Light DOM es el DOM normal y ¿cómo es diferente de eso? Entonces, lo primero, es diferente en cómo este específico Shadow DOM se crea en un elemento específico. Entonces, por ejemplo, digamos que hay un elemento llamado, digamos un elemento div, pero quieres el elemento shadow para ese desarrollo puedes crearlo. Entonces, la forma en que lo creas y lo usas, difiere en esa área. Otra característica muy asombrosa y una de mis favoritas que trae el Shadow DOM es la encapsulación y la componibilidad. Entonces, piensen en esto, como, digamos que están comiendo una pizza y en una porción de pizza básicamente obtienen todas sus verduras, todos sus, todos sus ingredientes en una porción. Otra porción tendría su propio conjunto de ingredientes. Entonces, es como si esas porciones de pizza tuvieran todo en ellas encapsulado. Entonces, de la misma manera, el Shadow DOM tiene su propiedad de encapsulación y componibilidad. Teniendo su propia forma de características funciones y capacidad para actuar por sí mismo y en lugar de perturbar el resto de la funcionalidad en la página web. Si hablamos de la precedencia, digamos que un elemento tiene un DOM normal y

2. Shadow DOM y Componentes Web

Short description:

El Shadow DOM tiene una mayor precedencia que el Light DOM. Algunos elementos HTML tienen su propio Shadow DOM, como Textarea, el botón Elegir archivo, Video y Audio. Estos elementos vienen con funcionalidad y estilo preconstruidos. Sin embargo, no todos los elementos tienen su propio Shadow DOM. Para aprovechar los beneficios del Shadow DOM, podemos crear nuestros propios elementos, como un botón personalizado, utilizando componentes web y la API de Shadow DOM.

un Shadow DOM. Por lo general, se da preferencia al Shadow DOM. El Shadow DOM tiene una mayor precedencia que el Light DOM, esta es otra diferencia cuando se compara con el Light DOM. Bien, avanzando pero no todos tienen su propia sombra. Como tomamos el ejemplo de Textarea, tomamos el ejemplo del botón Elegir archivo. Hay otros ejemplos como Video y Audio. Si ustedes ven los elementos Video y Audio, tienen un botón de más, tienen una barra de búsqueda, tienen un botón de opciones, todos esos elementos nos vienen de mano. Simplemente agregamos una etiqueta video y ellos simplemente aparecen. Entonces alguien debe haber escrito un CSS y el código completo y la funcionalidad completa de eso. Todo eso reside en el Shadow DOM. Y la opción de selección, el menú desplegable, el CSS alrededor de eso, todo eso reside en un Shadow DOM. Pero no todos los elementos en los elementos HTML dados tienen su propio Shadow DOM. Por ejemplo, un elemento div, por ejemplo, un elemento span no tiene su propio Shadow DOM. Entonces necesitamos profundizar en cómo podemos obtener los beneficios del Shadow DOM de la manera que queremos, la forma en que queremos encapsularlo, la forma en que queremos agregar una naturaleza de componibilidad a nuestros elementos HTML. Entonces, una de las formas en que podemos crear un Shadow DOM, digamos que hay un elemento llamado encabezado y digamos que queremos adjuntar Shadow con modo abierto. Esta es una API de navegador que está disponible, Attach Shadow, que nos ayuda básicamente a adjuntar un Shadow DOM y una vez, adjuntar un Shadow DOM al elemento que acabamos de crear, un encabezado, y con este encabezado lo que podemos hacer es que podemos agregar un HTML interno y agregar un como Hola Shadow DOM y eso se agregaría a ese elemento como un Shadow DOM. Vamos a ver muy pronto cómo aparece en el navegador. Pero eso no es todo, ¿verdad? Si lo piensas aquí, no queremos adjuntar Shadow DOM a los elementos existentes. Podemos tener los nuestros propios, porque tienen sus propias propiedades, tienen su propia forma de comportamiento según el elemento, por ejemplo, input, encabezado, etiquetas H1, H2, y lo que sea. Cada elemento tiene su propio comportamiento. Entonces no queremos obstaculizar eso. En cambio, nos gustaría usar el Shadow DOM creando algo propio. Como tomemos el ejemplo de un botón. Digamos que quieres tener un botón donde tiene su propia forma de comportamiento, su propia forma de animación, su propia forma de dar título al botón. Entonces, el Shadow DOM, cuando hablamos del Shadow DOM, tenemos que traer a la imagen, tenemos que traer componentes web a la imagen. Entonces, componentes web. Hoy vamos a ver los componentes web un poco desde la perspectiva del Shadow DOM en lugar de traer el punto de vista de la reutilización. Ese aspecto también se cubrirá un poco. Entonces, si piensas, entonces si ves cómo puedo crear un componente web, básicamente un componente web, un elemento personalizado completo propio, como digamos que quiero crear mi botón genial, mi botón genial, y si quiero poner cualquier cosa aquí, ¿cómo lo haría? Simplemente crearía una clase. Desconectaría la devolución de llamada y la devolución de llamada desconectada serían las funciones como, sí, ahora que estamos en el evento react, la devolución de llamada conectada es básicamente cuando algo está montado en el DOM y la devolución de llamada desconectada es cuando el elemento se desmonta en el DOM, entonces obtienes esta devolución de llamada y basado en esta devolución de llamada, puedes agregar oyentes, puedes agregar CSS, puedes

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
No ha habido escasez de críticas justas e injustas hacia los Componentes Web de una amplia gama de personas que construyen para la web, incluyendo pero no limitado a los autores de Frameworks de JavaScript en supuesta competencia con la plataforma. En esta charla te mostraré cómo navegar y simplificar el multifacético paisaje de los componentes web, satisfaciendo las críticas comunes y mostrando cómo puedes Usar la Plataforma de manera más efectiva hoy en día.
Es hora de desfragmentar la web
React Day Berlin 2022React Day Berlin 2022
34 min
Es hora de desfragmentar la web
Top Content
A lo largo de los últimos años, el número de frameworks web disponibles para nosotros ha explotado. En cierto modo, la amplitud de elección es una clara victoria para nuestro ecosistema. Sin embargo, para muchos de nosotros, también viene con severas desventajas: - ¿Alguna vez has usado un componente de código abierto popular construido para el framework A, y deseaste que existiera en el framework B? ¿Qué tal una biblioteca de sistema de diseño? - ¿Tu empresa tiene frontends construidos en diferentes frameworks, y tus equipos web están frustrados por las horas perdidas necesarias para lograr un sistema de diseño consistente? - ¿Tu equipo construye SDKs para frameworks web, y debe reescribirlos manualmente para cada framework? La solución a estos 3 problemas existe hoy. Para entenderla completamente, primero debemos examinar los frameworks web de hoy, repensar cómo debería ser un componente, e introducir una nueva Representación Intermedia de nuestros componentes. Esto es lo que hemos hecho en Builder.io cuando creamos Mitosis, y estamos emocionados de compartirlo con todos.
Componentes Web, Lit y Santa 🎅
JSNation Live 2021JSNation Live 2021
28 min
Componentes Web, Lit y Santa 🎅
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 🎅
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
En esta charla, Tony muestra cómo un enfoque de autoría y HTML semántico primero para el trabajo de plantillas JSX conduce a componentes de interfaz de usuario más legibles, mantenibles y accesibles. Demuestra cómo pensar en implementar un prototipo de interfaz de usuario de una manera semántica, autoría de HTML antes de los visuales. Muestra cómo el marcado accesible mejora el rendimiento, reduce el tamaño del DOM, minimiza el tiempo dedicado a CSS y reduce la carga cognitiva no solo para los desarrolladores, sino también para todos nuestros usuarios, sin importar cómo consuman nuestros sitios y aplicaciones.
Aplicaciones Web Inmutables
JSNation 2022JSNation 2022
20 min
Aplicaciones Web Inmutables
Resolver las dependencias cuando están todas agrupadas es fácil. Resolver las dependencias cuando se cargan a través de etiquetas de script es mucho más desafiante. El objetivo de esta charla es explicar cómo Meltwater maneja la resolución de dependencias al construir aplicaciones nativas basadas en componentes web que dependen de paquetes publicados por muchos equipos diferentes.
¡Los componentes web son increíbles!
JSNation 2022JSNation 2022
10 min
¡Los componentes web son increíbles!
¿Alguna vez te has preguntado cómo al colocar "video" o "audio" en tu HTML obtienes un reproductor multimedia con controles incluidos? ¿O cómo, dependiendo del atributo de tipo, "input" puede ser un botón, un lugar para ingresar texto, seleccionar una fecha o archivo, selector de color y más? ¿Qué tal si pudieras crear tu propio elemento? La respuesta: ¡Componentes web! 🤯 En esta charla, veremos qué son los componentes web, cómo crear uno e incluirlo en una aplicación.

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.