Es retornar HTML plano en una solicitud asíncrona una buena o mala práctica

JSON es una notación muy versátil y ligera, una muy buena razón para usar JSON pues una llamada asíncrona debería ser retornada lo más rápido posible. Sin embargo es una buena idea analizar y pensar si enviar solamente JSON es bueno o si tambien es posible retornar HTML para ser embebido en el DOM, todo dependiendo de que se ajusta mejor a las especificaciones y requisitos de tu proyecto.

Este artículo, como meta tiene la de aclarar y dar una respuesta a la frecuente problema de cuando usar JSON o HTML como respuesta en una llamada asíncrona. Siempre piensa en escabilidad, sostenibilidad y rendimiento.

Es mala práctica

No es malo retornar ni JSON ni HTML siempre y cuando tu código este bien optimizado. Siempre piensa en el balance correcto entre la cantidad de cosas debe procesar el lado del cliente y que debe procesar el servidor.

Es buena práctica

Si usas una colección de objetos u entidades enormes (+2000), probablemente no debas permitir que el dispositivo de tu usuario se encargue de procesar y renderizar con javascript elementos en el DOM, además del tiempo que lleva la serialización de tus entidades en el lado del servidor.

// Teniendo en cuenta que la cadena de JSON enviada del servidor es enorme
// y luego tiene que ser procesada con Javascript en el lado del cliente
// y finalmente se agregarán los elementos al DOM
// es una mala práctica #NOLOHAGAS

$.getJSON("http://myurl.com/response-service",function(data){
    // Donde data es un objeto con más de 2000 registros
    for(var i = 0; i < data.length;i++){
        var article = data[i];
        var html = '<div id="article-'+article.article_id+'">'+article.title+'</div>';
        html += '<div class="content">'+article.content+'</div>';
        $('#list-div').append(html);
    }
});

Si este es tu caso procura retornar una respuesta HTML (ya procesada en el servidor), para simplemente ser renderizada por el explorador usando Javascript, la carga será mucho menor para el explorador a costa de aumentar un poco más el tiempo de descarga en milisegundos.

Muchos desarrolladores de backend tienden a enviar siempre bloques de HTML como respuesta y luego esta es renderizada en el explorador, teoricamente bueno si es una colección enorme. Pero la mayoria lo hace no porque sea una buena práctica, sino porque algunos no dominan javascript de la misma manera en la que hacen el lenguaje de servidor (php, aspx etc) y deciden simplificar y facilitar el proceso dejando a cargo al servidor de esta tarea, simple para ellos y simple para el usuario.

Conclusiones

Recuerda que algo por más estúpido que suene, si funciona, no es estúpido, el hecho de enviar información que necesitas excluye esto como una mala práctica.

Necesitas analizar cada caso, decidir que hacer, que código se ajusta más a tus necesidades y que es más facil para tí. Preguntate siempre que sería mejor, necesito ejecutar el mismo código en distintos lugares etc. Procesar todo una sola vez en el servidor y usarlo muchas veces en diferentes lugares (algo así como un servicio que hace tu código mucho mas legible y sostenible) o renderizarlo con javascript en cada vista.

De acuerdo al rendimiento que tu aplicación necesita, por ejemplo el tiempo de carga, probablemente elegirás JSON en vez de una larga cadena de HTML (que sería optimo en dispositivos móviles).

El tiempo de desarrollo es otro punto importante a la hora de trabajar, considera que puedes hacer más rápido y que es más viable para tu equipo de trabajo.

Que te diviertas !

Esto podría ser de tu interes

Conviertete en un programador más sociable