¿Ves alguna errata o quiere sugerir algo?Haz un pull request

banner

Es importante conocer la diferencia entre el DOM (Document Object Model) y el Virtual DOM cuando se es desarrollador de React, porque ambos conceptos están relacionados con la forma en que se maneja y actualiza la interfaz de usuario en una aplicación web.

¿Qué es el DOM?

El DOM es una representación de la estructura de un documento HTML. Es una interfaz que permite a los programas y scripts acceder y actualizar el contenido, estructura y estilo de un documento HTML.

¿Qué es el Virtual DOM?

El Virtual DOM es una copia del DOM que React mantiene en memoria y que se actualiza cada vez que se realiza un cambio en la interfaz de usuario. Este se sincroniza con el DOM real por medio de la librería ReactDom. Y sirve para mejorar el rendimiento de la aplicación, ya que React compara el Virtual DOM con el DOM real y solo actualiza y repinta únicamente los elementos que han cambiado. Lo anteriormente mencionado se le conoce como Algoritmo de Diffing, y es su principal diferencia con el DOM real.

Veámos la siguiente imagen. 👀

auto_close_tag

  1. State Change: En este primero, se produce un cambio en el nodo de color morado, lo que provoca que se genere un Virtal DOM en memoria con el árbol resultante tras el cambio.

  2. Compute diff: En este segundo paso, se realiza la comparación por medio del algoritmo de Diffing entre el árbol del Virtual DOM y el DOM Real para conocer los cambios generados en la interfaz. Como se ve en el gráfico, el cambio afecta a toda la rama descendiente del nodo cuyo estado cambió.

  3. Re-render: Finalmente, se realiza el cambio en el DOM real y la interfaz gráfica se vuelve a renderizar de golpe con los cambios actualizados.

En conclusión, como desarrollador de React es importante comprender la diferencia entre el DOM y el Virtual DOM. El DOM representa la estructura HTML de una página web y es utilizado por los navegadores para manipular y actualizar la interfaz de usuario. Por otro lado, el Virtual DOM es una abstracción utilizada por React para optimizar la actualización del DOM. 👨‍💻