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".

This talk has been presented at Vue.js London 2023, check out the latest edition of this JavaScript Conference.

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
State management is not limited to complex applications and transitioning to a store offers significant benefits. Pinia is a centralized state management solution compatible with Vue 2 and Vue 3, providing advanced devtools support and extensibility with plugins. The core API of Pinia is similar to Vuex, but with a less verbose version of stores and powerful plugins. Pinia allows for easy state inspection, error handling, and testing. It is recommended to create one file per store for better organization and Pinia offers a more efficient performance compared to V-rex.
Bienvenido a Nuxt 3
Vue.js London Live 2021Vue.js London Live 2021
29 min
Bienvenido a Nuxt 3
Top Content
Nux3 has made significant improvements in performance, output optimization, and serverless support. Nuxt Bridge brings the Nitro engine for enhanced performance and easier transition between Nuxt 2 and Nuxt Read. Nuxt 3 supports Webpack 5, Bytes, and Vue 3. NextLab has developed brand new websites using Docus technology. Nuxt.js is recommended for building apps faster and simpler, and Nuxt 2 should be used before migrating to Nuxt 3 for stability. DOCUS is a new project that combines Nuxt with additional features like content modules and an admin panel.
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 has seen significant adoption and improvements in performance, bundle size, architecture, and TypeScript integration. The ecosystem around Vue 3 is catching up, with new tools and frameworks being developed. The Vue.js.org documentation is undergoing a complete overhaul. PNIA is emerging as the go-to state management solution for Vue 3. The options API and composition API are both viable options in Vue 3, with the choice depending on factors such as complexity and familiarity with TypeScript. Vue 3 continues to support CDN installation and is recommended for new projects.
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
In this Talk, the speaker demonstrates how to use Rust with WebAssembly in a Vue.js project. They explain that WebAssembly is a binary format that allows for high-performance code and less memory usage in the browser. The speaker shows how to build a Rust example using the WasmPack tool and integrate it into a Vue template. They also demonstrate how to call Rust code from a Vue component and deploy the resulting package to npm for easy sharing and consumption.
Vue: Actualizaciones de Características
Vue.js London 2023Vue.js London 2023
44 min
Vue: Actualizaciones de Características
Top Content
The Talk discusses the recent feature updates in Vue 3.3, focusing on script setup and TypeScript support. It covers improvements in defining props using imported types and complex types support. The introduction of generic components and reworked signatures for defined components provides more flexibility and better type support. Other features include automatic inference of runtime props, improved define emits and defined slots, and experimental features like reactive props destructure and define model. The Talk also mentions future plans for Vue, including stabilizing suspense and enhancing computer invalidations.
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
This Talk discusses handling local state in software development, particularly when dealing with asynchronous behavior and API requests. It explores the challenges of managing global state and the need for actions when handling server data. The Talk also highlights the issue of fetching data not in Vuex and the challenges of keeping data up-to-date in Vuex. It mentions alternative tools like Apollo Client and React Query for handling local state. The Talk concludes with a discussion on GitLab going public and the celebration that followed.

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 Kuznetsov
Mikhail Kuznetsov
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
Monitoreo 101 para Desarrolladores de React
React Summit US 2023React Summit US 2023
107 min
Monitoreo 101 para Desarrolladores de React
Top Content
WorkshopFree
Lazar Nikolov
Sarah Guthals
2 authors
Si encontrar errores en tu proyecto frontend es como buscar una aguja en un pajar de código, entonces el monitoreo de errores de Sentry puede ser tu detector de metales. Aprende los conceptos básicos del monitoreo de errores con Sentry. Ya sea que estés ejecutando un proyecto de React, Angular, Vue, o simplemente JavaScript “vainilla”, mira cómo Sentry puede ayudarte a encontrar el quién, qué, cuándo y dónde detrás de los errores en tu proyecto frontend.
Nivel de la masterclass: Intermedio
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.