Construyendo el VDOM de Vue 3 en el Escenario

Rate this content
Bookmark

Esta charla está diseñada para mostrar a las personas qué es un virtual DOM y para qué se utiliza. Veremos un poco de teoría al respecto y luego construiremos una versión simplificada del VDOM de Vue 3 en el escenario desde cero, paso a paso. ¡Después de la charla, las personas tendrán más familiaridad con la caja negra que a veces es el "VDOM".

FAQ

El Virtual DOM es una representación virtual del DOM real. Funciona como una interfaz de programación para documentos HTML y XML y representa un documento como un árbol de nodos y sub-nodos.

El Virtual DOM desacopla la lógica de renderizado del DOM real, facilitando la manipulación y la inspección programática del conjunto. Esto permite realizar cambios y actualizaciones de manera más eficiente y es útil en diversos entornos como aplicaciones móviles nativas o renderizadores WebGL.

Para crear un nodo virtual en el Virtual DOM, se utiliza una función denominada 'H' o Hyperscript, que es básicamente JavaScript que produce HTML. Esta función toma parámetros como la etiqueta, propiedades y los hijos del elemento.

El DOM es el Document Object Model real que estructura elementos HTML y XML en el navegador. El Virtual DOM, por otro lado, es una copia virtual de este DOM, que permite realizar cambios sin afectar el DOM real hasta que todos los cambios estén listos para ser implementados, optimizando así el rendimiento de las actualizaciones.

El Virtual DOM mejora el rendimiento al minimizar las operaciones costosas en el DOM real. Esto es especialmente útil en aplicaciones grandes donde frecuentes actualizaciones del DOM podrían llevar a cuellos de botella de rendimiento.

Marc Backes
Marc Backes
31 min
15 May, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Hoy construiremos un virtual DOM, que es una interfaz de programación para documentos HTML y XML. El virtual DOM desacopla la lógica de renderizado del DOM real, lo que facilita su manipulación e inspección. Crearemos nuestro propio virtual DOM implementando funciones para crear, montar, desmontar y parchear nodos virtuales. También exploraremos el manejo de eventos, la renderización de listas de objetos y el desmontaje de nodos. El virtual DOM en Vue 3 tiene una jerarquía más plana y puede ser reemplazado por la manipulación directa del DOM para obtener un mejor rendimiento.

Available in English: Building the Vue 3 VDOM on Stage

1. Introducción al Virtual DOM

Short description:

Hoy vamos a construir un Virtual DOM. El Virtual DOM es una interfaz de programación para documentos HTML y XML. Representa un documento como un árbol, con nodos e hijos. Se puede acceder y manipular a través de JavaScript. Vamos a basarnos en el DOM del sitio web oficial de Vue.js.

Muy bien. Así que mi charla podría interrumpir un poco la sesión de preguntas y respuestas, por eso voy directo a la presentación.

Hoy vamos a construir un Virtual DOM, pero primero vamos a ver un poco qué es.

Así que primero un poco sobre mí. Mi nombre es Mark, y aquí es donde puedes encontrarme en Twitter. Ahí es donde soy más activo. Así que si después de esto todavía tienes preguntas que no puedo responder aquí o simplemente quieres hablar en general, contáctame allí. Soy DevRel Lead en WeAreDevelopers, donde ayudo a organizar conferencias como nuestro Congreso Mundial en julio, que es súper genial. Soy coorganizador del capítulo de Bellevue. Es el capítulo belga de Vue.js. Y recientemente soy estudiante piloto, lo cual ocupa todo mi tiempo que no paso trabajando. Así que si hay algún entusiasta de la aviación aquí, contáctame más tarde, podemos hablar durante horas sobre esto tema.

Muy bien, veamos el Virtual DOM. Bueno, ¿qué es? El Virtual DOM es un modelo de objeto de documento. Pero, ¿qué significa eso? Es una interfaz de programación para documentos HTML y XML. Y esto representa un documento como un árbol. Así que tienes un nodo y luego tienes uno o más hijos. Y luego esto podría tener uno o más hijos. Y hasta el final, no hay nada más que hacer que renderizar lo que sea. Ya sea renderizar una imagen, texto, lo que sea. Y se puede acceder y manipular a través de JavaScript. Y así es como se ve un DOM. El DOM que todos conocemos y amamos. Este es en realidad el DOM de view3.org. No, view3.org creo. Vue.js.org. Sí, lo siento. Sí, el sitio web oficial de Vue.js. Aquí puedes ver algunos contenedores, como la aplicación y la aplicación VP, que luego tienen hijos y así sucesivamente. Así que en eso nos vamos a basar.

2. Comprendiendo el Virtual DOM

Short description:

El Virtual DOM es una representación virtual del DOM real. Desacopla la lógica de renderizado del DOM real, lo que facilita su manipulación e inspección. Se puede utilizar fuera del navegador, como en aplicaciones móviles nativas o renderizadores WebGL. En el Virtual DOM, las etiquetas se representan como nodos, los atributos como propiedades y el contenido como hijos. La función H en JavaScript se puede utilizar para crear nodos con diversas estructuras.

De acuerdo, ahora tenemos una idea de qué es un DOM. Veamos qué es un Virtual DOM. En realidad, es lo que su nombre sugiere: una representación virtual del DOM real. Esto podría ser, por ejemplo, objetos en JavaScript, que es exactamente lo que haremos hoy. Este elemento vive en el navegador o en la memoria del navegador y está sincronizado con el DOM real. Esto es lo que utiliza Vue.js en su núcleo, al igual que otros frameworks. Sin embargo, por ejemplo, Petite View no utiliza un Virtual DOM, lo cual está bien.

Ahora, podrías preguntarte: `¿Por qué deberíamos usarlo o por qué tenemos un Virtual DOM?` Especialmente después de escuchar a Avenue decir que tiene cierta sobrecarga de rendimiento. Pero veamos. Lo genial aquí es que desacopla la lógica de renderizado del DOM real y es más fácil manipular y inspeccionar todo el conjunto de forma programática si queremos hacer algo personalizado. También es más fácil reutilizarlo fuera del navegador, por ejemplo, si haces una aplicación móvil nativa o un renderizador WebGL. Una vez escuché a Avenue responder a una pregunta en una entrevista donde dijo que alguien construyó un renderizador WebGL basado en el Virtual DOM de Vue 3, lo cual es bastante genial.

Bien, antes de comenzar a construir esto, echemos un vistazo al DOM real. ¿Qué necesitamos construir aquí? Veamos este marcado HTML muy simple. ¿Qué tenemos aquí? Tenemos estas cosas que llamamos etiquetas, ¿verdad? Necesitamos representar las etiquetas en nuestro Virtual DOM. Anotémoslo. Necesitamos etiquetas. ¿Qué más necesitamos aquí? Estos son atributos. También podría ser una función, como un evento onClick o algo así. Llamémoslo propiedades. Y luego tenemos la última parte, que es nuestro contenido, pero no lo llamaremos contenido porque es un árbol, así que simplemente el árbol tiene hijos. Llamémoslo hijos. Pero como puedes ver en este ejemplo, hijos no es la forma más intuitiva de llamarlo porque podría ser solo texto, podría ser solo un elemento allí o podría ser varios hijos. Por lo tanto, en la última parte tiene más sentido llamarlo hijos, pero así es como se llama.

Bien, para crear nodos tenemos esta función H o Hyperscript, que significa simplemente JavaScript que produce HTML. Veamos qué podemos crear con esto. Aquí represento tres cosas diferentes que podemos hacer. Aquí puedes ver en el tercer parámetro o tercer argumento, es un texto. Por lo tanto, nuestro Virtual DOM, nuestro DOM puede tener un texto. ¿Qué más puede tener? Puede tener otro nodo virtual que luego tiene, en este caso, otro texto. Pero podría ser hasta, como, puede tener tantos hijos como sea necesario o como desees. Y luego tenemos el tercer ejemplo, que es tener una matriz de estos nodos.

QnA

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

Todo Más Allá de la Gestión de Estado en Tiendas con Pinia
Vue.js London Live 2021Vue.js London Live 2021
34 min
Todo Más Allá de la Gestión de Estado en Tiendas con Pinia
Top Content
Cuando pensamos en Vuex, Pinia, o tiendas en general, a menudo pensamos en la gestión de estado y los patrones Flux, pero no solo las tiendas no siempre siguen el patrón Flux, ¡hay mucho más en las tiendas que las hace valer la pena usar! Plugins, Devtools, renderizado en el lado del servidor, integraciones TypeScript... Vamos a sumergirnos en todo más allá de la gestión de estado con Pinia con ejemplos prácticos sobre plugins y Devtools para sacar el máximo provecho de tus tiendas.
Bienvenido a Nuxt 3
Vue.js London Live 2021Vue.js London Live 2021
29 min
Bienvenido a Nuxt 3
Top Content
Explica sobre la refactorización del código base de NuxtJS y los desafíos que enfrenta para implementar Vue 3, Vite y otros paquetes.
Un Año en Vue 3
Vue.js London Live 2021Vue.js London Live 2021
20 min
Un Año en Vue 3
Top Content
Vue 3 puede sonar aún nuevo para muchos usuarios, pero en realidad ya ha sido lanzado hace más de un año. ¿Cómo evolucionó Vue 3 durante este período? ¿Por qué tardó tanto en ponerse al día el ecosistema? ¿Qué aprendimos de este proceso? ¿Qué viene después? ¡Discutiremos estas preguntas en esta charla!
Utilizando Rust desde Vue con WebAssembly
Vue.js London Live 2021Vue.js London Live 2021
8 min
Utilizando Rust desde Vue con WebAssembly
Top Content
Rust es un nuevo lenguaje para escribir código de alto rendimiento, que puede ser compilado a WebAssembly, y ejecutado dentro del navegador. En esta charla se te guiará sobre cómo puedes integrar Rust, dentro de una aplicación Vue, de una manera que es sencilla y fácil. Con ejemplos de cómo interactuar con Rust desde JavaScript, y algunas de las trampas a tener en cuenta.
Vue: Actualizaciones de Características
Vue.js London 2023Vue.js London 2023
44 min
Vue: Actualizaciones de Características
Top Content
El creador de Vue js da una actualización sobre las nuevas características de la tecnología.
Estado Local y Caché del Servidor: Encontrando un Equilibrio
Vue.js London Live 2021Vue.js London Live 2021
24 min
Estado Local y Caché del Servidor: Encontrando un Equilibrio
Top Content
¿Cuántas veces has implementado el mismo flujo en tu aplicación: verificar si los datos ya se han obtenido del servidor, si es así - renderizar los datos, si no - obtener estos datos y luego renderizarlos? Creo que lo he hecho más de diez veces yo mismo y he visto la pregunta sobre este flujo más de cincuenta veces. Desafortunadamente, nuestra biblioteca de gestión de estado predeterminada, Vuex, no proporciona ninguna solución para esto.Para la aplicación basada en GraphQL, había una alternativa para usar el cliente Apollo que proporcionaba herramientas para trabajar con la caché. Pero, ¿qué pasa si usas REST? Afortunadamente, ahora tenemos una alternativa de Vue a una biblioteca de react-query que proporciona una buena solución para trabajar con la caché del servidor. En esta charla, explicaré la distinción entre el estado de la aplicación local y la caché del servidor local y haré algo de codificación en vivo para mostrar cómo trabajar con este último.

Workshops on related topic

Vue3: Desarrollo Moderno de Aplicaciones Frontend
Vue.js London Live 2021Vue.js London Live 2021
169 min
Vue3: Desarrollo Moderno de Aplicaciones Frontend
Top Content
Featured WorkshopFree
Mikhail Kuznetcov
Mikhail Kuznetcov
Vue3 fue lanzado a mediados de 2020. Además de muchas mejoras y optimizaciones, la principal característica que trae Vue3 es la API de Composición, una nueva forma de escribir y reutilizar código reactivo. Aprendamos más sobre cómo usar la API de Composición de manera eficiente.

Además de las características principales de Vue3, explicaremos ejemplos de cómo usar bibliotecas populares con Vue3.

Tabla de contenidos:
- Introducción a Vue3
- API de Composición
- Bibliotecas principales
- Ecosistema Vue3

Requisitos previos:
IDE de elección (Inellij o VSC) instalado
Nodejs + NPM
Usando Nitro - Construyendo una Aplicación con el Último Motor de Renderizado de Nuxt
Vue.js London Live 2021Vue.js London Live 2021
117 min
Usando Nitro - Construyendo una Aplicación con el Último Motor de Renderizado de Nuxt
Top Content
Workshop
Daniel Roe
Daniel Roe
Construiremos un proyecto Nuxt juntos desde cero usando Nitro, el nuevo motor de renderizado de Nuxt, y Nuxt Bridge. Exploraremos algunas de las formas en que puedes usar y desplegar Nitro, mientras construimos una aplicación juntos con algunas de las restricciones del mundo real que enfrentarías al desplegar una aplicación para tu empresa. En el camino, dispara tus preguntas hacia mí y haré lo mejor para responderlas.
Embarcándonos en una aventura con Nuxt 3, Motion UI y Azure
JSNation 2022JSNation 2022
141 min
Embarcándonos en una aventura con Nuxt 3, Motion UI y Azure
WorkshopFree
Melanie de Leeuw
Melanie de Leeuw
¡Nos encantan las aplicaciones web fáciles de crear y desplegar! Entonces, veamos qué puede hacer una pila tecnológica muy actual como Nuxt 3, Motion UI y Azure Static Web Apps. Podría ser perfectamente un trío de oro en el desarrollo web moderno. O podría ser una hoguera de errores y problemas. De cualquier manera, será una aventura de aprendizaje para todos nosotros. Nuxt 3 se lanzó hace apenas unos meses y no podemos esperar más para explorar sus nuevas características, como su compatibilidad con Vue 3 y el Motor Nitro. Agregamos un poco de estilo a nuestra aplicación con la biblioteca Sass Motion UI, porque el diseño estático está pasado de moda y las animaciones vuelven a estar de moda.Nuestra fuerza impulsora de la pila será Azure. Las aplicaciones web estáticas de Azure son nuevas, casi listas para producción y una forma ingeniosa y rápida para que los desarrolladores desplieguen sus sitios web. Así que, por supuesto, debemos probar esto.Con algunas Azure Functions esparcidas por encima, exploraremos lo que puede hacer el desarrollo web en 2022.
TresJS crea experiencias 3D de forma declarativa con componentes Vue
Vue.js London 2023Vue.js London 2023
137 min
TresJS crea experiencias 3D de forma declarativa con componentes Vue
Workshop
Alvaro Saburido
Alvaro Saburido
- Introducción a 3D- Introducción a WebGL- ThreeJS- Por qué TresJS- Instalación o configuración de Stackblitz- Conceptos básicos- Configuración del lienzo- Escena- Cámara- Agregar un objeto- Geometrías- Argumentos- Props- Slots- El bucle- Composable UseRenderLoop- Callbacks antes y después de la renderización- Animaciones básicas- Materiales- Material básico- Material normal- Material Toon- Material Lambert- Material estándar y físico- Metalness, roughness- Luces- Luz ambiental- Luz direccional- Luces puntuales- Sombras- Texturas- Cargar texturas con useTextures- Consejos y trucos- Misceláneo- Controles de órbita- Cargar modelos con Cientos- Depuración de tu escena- Rendimiento
Construyendo formularios Vue con VeeValidate
Vue.js London Live 2021Vue.js London Live 2021
176 min
Construyendo formularios Vue con VeeValidate
Workshop
Abdelrahman Awad
Abdelrahman Awad
En este masterclass, aprenderás cómo usar vee-validate para manejar la validación de formularios, gestionar los valores de los formularios y manejar las presentaciones de manera efectiva. Comenzaremos desde lo básico con un formulario de inicio de sesión simple hasta el uso de la API de composición y la construcción de formularios repetibles y de múltiples pasos.

Tabla de contenidos:
- Introducción a vee-validate
- Construcción de un formulario básico con componentes vee-validate
- Manejo de validación y presentaciones de formularios
- Construcción de componentes de entrada validables con la API de composición
- Arrays de campos e inputs repetibles
- Construcción de un formulario de múltiples pasos
Prerrequisitos:
Configuración de VSCode y un proyecto Vite + Vue vacío.
Construyendo aplicaciones GraphQL de pila completa con Hasura y Vue 3
Vue.js London Live 2021Vue.js London Live 2021
115 min
Construyendo aplicaciones GraphQL de pila completa con Hasura y Vue 3
WorkshopFree
Gavin Ray
Gavin Ray
El ecosistema frontend avanza a un ritmo frenético. Este masterclass tiene como objetivo equipar a los participantes con una comprensión del estado del ecosistema Vue 3 + GraphQL, explorando ese ecosistema - prácticamente y a través del desarrollo de aplicaciones de pila completa.

Tabla de contenidos
- Los participantes utilizarán Hasura para construir una API GraphQL en tiempo real respaldada por Postgres. Juntos recorreremos su consumo desde un frontend y haremos que el frontend sea reactivo, suscrito a los cambios de datos.
- Además, analizaremos las herramientas comúnmente utilizadas en el stack Vue GraphQL (como Apollo Client y Urql), discutiremos algunas alternativas menos conocidas y abordaremos los problemas frecuentemente encontrados al comenzar.
- Se describirán varios patrones para gestionar datos con estado y sus compensaciones durante el masterclass, y se mostrará una implementación básica para cada patrón discutido.
Nivel del masterclass

NOTA: No se requiere experiencia previa con GraphQL, pero puede ser útil para ayudar a la comprensión. Se cubrirán los fundamentos.