Contrariamente al pensamiento popular, los atributos data-*
son una extensión de un objeto DOM. Simplemente es una extensión que forma parte de la especificación W3C (ver 3 Semántica, estructura y API de documentos HTML).
Una pequeña teoría …
Creo que el enlace de datos es actualmente un antipatrón recomendado. Viola el propósito original de HTML, que pretendía proporcionar estructura / relaciones de documentos / contenidos, no una gestión de datos operativa o dinámica (que es para lo que sirve JavaScript). Sin embargo; Como muestra la especificación, los atributos de datos existen claramente. Se supone que son para atributos ocultos (marcado), y no estaban destinados a ser controladores lógicos dinámicos. En otras palabras, los atributos de datos son un abuso de la intención del DOM. Muchos los consideran necesarios porque las implementaciones DOM de los navegadores simplemente no han evolucionado mucho y son complejas. Eso no significa que los enfoques de enlace de datos sean correctos / incorrectos, solo significa que el DOM es un desastre. Microsoft lanzó una mirada bastante entusiasta y profunda de por qué el DOM necesita cambiar: Modernizando el árbol DOM en Microsoft Edge.
- ¿Cuántos usuarios concurrentes admitirá un sitio web estándar en un plan de alojamiento estándar basado en si se trata de un servidor Unix, Linux o Windows que se ejecuta en el servidor?
- ¿Qué curso es mejor para el diseño de sitios web y el desarrollo de software?
- ¿Cómo podré mantener todos los datos de una aplicación web en una sola base de datos? ¿Cómo puedo establecer una base de datos para todo el almacenamiento de datos?
- ¿Cómo se integra su sitio web con la línea de tiempo de Facebook?
- Si quiero convertirme en desarrollador web, ¿debo aprender JavaScript? ¿Puedo aprender Python en su lugar?
Las operaciones informáticas más caras son los cambios DOM, en los que se basa el enlace de datos. La memoria existe con el propósito de almacenar y manipular datos que actualmente están siendo utilizados por un programa . Al almacenar datos en el DOM en lugar de la memoria, JavaScript debe monitorear el DOM (costoso) y responder a los cambios (es decir, manipular el DOM, también costoso). En algunos casos, los atributos de datos se “actualizan” para reflejar el mismo valor que tenían originalmente, lo que desencadena innecesariamente estos cambios. JavaScript es capaz de manejar todo esto en un medio diseñado para este propósito (memoria), por lo tanto, solo desencadena cambios DOM cuando es absolutamente necesario. Esta es la idea general detrás del DOM virtual.
Hacia el futuro …
Los elementos personalizados, que son 1 de 4 especificaciones de componentes web, webcomponents.org, ofrecen una forma emergente de ampliar y crear elementos DOM personalizados capaces de manejar datos “internamente” y responder a los cambios en consecuencia. Se supone que deben brindar a los desarrolladores una forma más intuitiva y efectiva de elegir el medio adecuado para las operaciones de presentación y datos. Sin embargo; la especificación está en modo borrador y el estado de implementación en los navegadores aún es un poco tosco, lo que dificulta la adopción. Es evidencia de un alejamiento del enlace de datos tal como lo conocemos actualmente, hacia un patrón que logra los mismos objetivos de una manera más efectiva.