javascript-que-es-el-dom

Qué es el DOM de una Web

El DOM (Document Object Model) es una interfaz de programación para documentos HTML y XML.

Cuando el navegador web procesa un HTML, internamente (en la memoria) crea un árbol de nodos que representan la estructura del documento.

Este árbol es lo que usa el navegador para procesar, trabajar, y renderizar cada parte del documento *(elementos, atributos, y texto).

El DOM es el “estándar” que sigue este árbol de nodos. Es una forma estructurada y jerárquica de acceder y manipular el contenido y la estructura de una página web.

De esta forma, actúa como el puente entre el contenido de una página web y los lenguajes de programación que la pueden manipular dinámicamente (por ejemplo, para cambiar un elemento, añadir o quitar uno, etc).

Estructura del DOM

La estructura básica del DOM puede visualizarse como un árbol con el nodo raíz (el documento) en la parte superior, y los elementos, atributos, y texto como nodos hijos y subnodos.

Por ejemplo, cuando el navegador recibe este HTML,

<!DOCTYPE html>
<html>
<head>
    <title>Mi Página Web</title>
</head>
<body>
    <div id="contenido">
        <h1>Hola, Mundo!</h1>
        <p>Este es un párrafo de texto.</p>
    </div>
</body>
</html>

El navegador lo lee, lo procesa, y en memoria crea un árbol DOM que podemos representar así,

🏠 Document
 └── 📦 html
     ├── 📦 head
     │    └── ✏️ title
     └── 📦 body
         └── 📦 div
             ├── 📄 id="contenido"
             ├── ✏️ h1
             └── ✏️ p

Esto es con lo que trabaja internamente el navegador

Nodos en el DOM

Como hemos dicho, todo lo que hay dentro el DOM son nodos. Pero pueden especializarse en distintos tipos.

Los principales tipos de nodos en el DOM incluyen:

Tipo de nodoClase nodoEjemplos HTMLDescripción
🏠 DocumentoHTMLDocument(todo el documento)El documento entero.
📦 ElementoHTMLElement<div>, <p>, <h1>Cada etiqueta HTML.
📄 AtributoAttrid="miDiv"Los atributos de los elementos.
✏️ TextoText"Hola, Mundo!"El contenido textual del elemento.
💬 ComentarioComment<!-- Comentario -->Los comentarios en el HTML.

A su vez, el tipo HTMLElement, puede especializarse en un subtipo diferente. Existe uno por cada etiqueta de HTML. Os dejo un listado con los principales aquí 👇

Para que nos sirve el DOM

El DOM proporciona una manera de interactuar con los documentos web desde un lenguaje de programación como JavaScript.

Por ejemplo, con el DOM podemos

Cómo se actualiza el DOM

Cada vez que hacemos una acción sobre el DOM, el navegador actualiza automáticamente cada uno de los cambios realizados por JavaScript.

Por ejemplo, cuando manipulamos el DOM mediante métodos como appendChild, removeChild, o innerHTML, el navegador actualiza la representación visual del documento en consecuencia.

Esto está muy bien, pero en proyectos y aplicaciones grandes y complejas, si actualizamos muchos elementos constantemente, puede suponer un problema de rendimiento.

Para mejorarlo hay varios “trucos” que podemos hacer, como

  • Evitar manipulaciones directas frecuentes: Reduce la cantidad de acceso y modificación directa al DOM para mejorar el rendimiento.
  • Utilizar fragmentos del DOM: Usa DocumentFragment para hacer cambios en un fragmento del DOM antes de agregarlo al DOM principal.
  • DOM alternativos: Algunos frameworks usan su propio DOM interno, donde recolectan los cambios antes de mandarlos al DOM del navegador.