es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mejores prácticas para crear múltiples bloques de HTML dinámicamente.

Para contextualizar: Mi aplicación tiene un programador y quiero mostrar múltiples bloques de citas (digamos un div como hijos de una imagen, texto y un botón), pero esta pregunta también puede ser aplicable, por ejemplo, a catálogos de productos. ¿Cuál es la mejor práctica para construir el contenido HTML para esos bloques?

En mi búsqueda encontré múltiples opciones, por ejemplo (con código pseudo):

Construir línea por línea en jQuery

$('<div>').append($('<img>')).append($('<p>')).append($('<button>'));

Personalmente encontré que esta opción se volvía bastante fea una vez que el bloque tenía más de 3-5 elementos, porque el código comenzaba a abarcar más de una página completa de desplazamiento y se volvía ilegible (pero esto también podría ser debido a mis habilidades de programación deficientes).

Recuperar página HTML mediante Ajax/Cargar

<div>
    <img><p></p><button></button>
</div>

$("target").load("page.php");
o
$.ajax({
   url: "page.php",
   success: function (response) {
      $("target").append(response);
});

La ventaja de esto es que separa el contenido, lo que reduce el tiempo de carga inicial de la página y el contenido se puede construir en el servidor justo antes de que se requiera. El inconveniente es que mi servidor muestra un retraso de aproximadamente 0.1s (en promedio, reproducible) para que las llamadas Ajax regresen (sin casi datos enviados de ida y vuelta). Aunque esto pueda parecer insignificante, todos los pequeños retrasos se suman y pueden afectar la experiencia del usuario.

Clonar plantillas

<template>
   <div>
      <img><p></p><button></button>
   </div>
</template>

const template = document.querySelector("template");
var tgt = document.getElementById("target");
node = document.importNode(template.content, true);
tgt.appendChild(node);

La ventaja de esta opción es que es aproximadamente 10-20 veces más rápida que la primera opción (construir mediante jQuery), pero esto solo será notable después de ~1000 bloques, lo cual excede ampliamente mi caso de uso. El inconveniente es que esto “contamina” el código HTML de la página y de todos modos se requiere el procesamiento del contenido en el objeto a través de JS.

¿Cuáles son otras opciones viables que existen? ¿Y cuál es la mejor práctica para este caso de uso?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Otra opción viable es utilizar un framework de front-end como React o Vue.js para construir los bloques de citas o catálogos de productos. Estos frameworks tienen su propia sintaxis para construir componentes HTML y pueden manejar contenido dinámico de manera eficiente. También proporcionan características adicionales como gestión de estado y reutilización de componentes.

    La mejor práctica para construir el contenido HTML de bloques de citas o catálogos de productos depende del caso de uso y los requisitos específicos. Sin embargo, utilizar un framework de front-end como React o Vue.js puede proporcionar una solución más eficiente y organizada para manejar contenido dinámico. Alternativamente, el uso de plantillas o la recuperación de HTML a través de AJAX también puede ser efectivo dependiendo de la situación. Al final, se trata de evaluar los pros y los contras de cada opción y elegir el enfoque que mejor se adapte a las necesidades del proyecto.

Comments are closed.