Je suis un peu sur les deux côtés, en fait :
- Lors de ce dont j'ai besoin sur le javascript côté est de données, j'utilise JSON
- Lors de ce dont j'ai besoin sur le javascript côté est de la présentation sur laquelle je ne vais pas faire le calcul, en général, je utiliser de l'HTML
Le principal avantage de l'utilisation de HTML, c'est quand vous voulez remplacer une portion complète de votre page avec ce qui vient de revenir de la requête Ajax :
- Re-construction d'une partie de la page en JS est (très) dur
- Vous avez déjà probablement certains moteur de template sur le côté serveur, qui a été utilisé pour générer la page, en premier lieu... Pourquoi ne pas le réutiliser ?
En général je n'ai pas vraiment prendre en compte la "performance" du côté des choses, au moins sur le serveur :
- Sur le serveur, générant une portion de HTML ou de certains JSON ne serez pas probablement faire beaucoup de différence
- Au sujet de la taille de ce qui se passe à travers le réseau : eh bien, vous n'avez probablement pas utiliser des centaines de KO de données/html... à l'Aide de gzip sur tout ce que vous transférez est ce qui va faire la plus grande différence (pas de choisir entre HTML et JSON)
- Une chose qui pourrait être pris en considération, cependant, est que les ressources dont vous aurez besoin sur le client afin de recréer le HTML (DOM structure de données JSON... de la comparer à pousser une partie de HTML dans la page ;-)
Enfin, une chose que définitivement les questions :
- Combien de temps ça va vous prendre pour développer un nouveau système qui permettra d'envoyer des données en JSON + code de la JS injecter comme du HTML dans la page ?
- Combien de temps cela prend-il pour juste retour HTML ? Et combien de temps si vous pouvez réutiliser certains de votre code côté serveur ?
Et pour répondre à une autre réponse : si vous avez besoin de mettre à jour plus d'une partie de la page, il y a toujours la solution de hack de l'envoi de toutes les pièces à l'intérieur d'une grande chaîne qui regroupe plusieurs HTML parties, et d'en extraire les éléments pertinents en JS.
Par exemple, vous pourriez retourner une chaîne de caractères qui ressemble à ceci :
<!-- MARKER_BEGIN_PART1 -->
here goes the html
code for part 1
<!-- MARKER_END_PART1 -->
<!-- MARKER_BEGIN_PART2 -->
here goes the html
code for part 2
<!-- MARKER_END_PART2 -->
<!-- MARKER_BEGIN_PART3 -->
here goes the json data
that will be used to build part 3
from the JS code
<!-- MARKER_END_PART3 -->
Qui n'a pas l'air vraiment bon, mais il est certainement utile (je l'ai utilisé tout à fait une couple de fois, surtout quand le HTML, les données étaient trop gros pour être encapsulé dans JSON) : vous envoyez HTML pour les parties de la page qui ont besoin de présentation, et vous envoyez JSON pour la situation que vous avez besoin de données...
... Et pour extraire celles-ci, la JS sous-chaîne de la méthode fera l'affaire, je suppose ;-)