Je suis un peu des deux côtés, en fait:
- Lorsque ce dont j'ai besoin du côté javascript, ce sont des données , j'utilise JSON
- Lorsque ce dont j'ai besoin du côté javascript est une présentation sur laquelle je ne ferai aucun calcul, j'utilise généralement du HTML
Le principal avantage de l'utilisation de HTML est lorsque vous souhaitez remplacer une partie complète de votre page par ce qui revient de la demande Ajax:
- Reconstruire une partie de la page dans JS est (assez) difficile
- Vous avez probablement déjà un moteur de template côté serveur, qui a été utilisé pour générer la page en premier lieu ... Pourquoi ne pas la réutiliser?
En général, je ne prends pas vraiment en compte le côté "performance" des choses, du moins sur le serveur:
- Sur le serveur, la génération d'une partie de HTML ou de JSON ne fera probablement pas beaucoup de différence
- À propos de la taille des éléments qui transitent par le réseau: eh bien, vous n'utilisez probablement pas des centaines de Ko de données / html ... L'utilisation de gzip sur tout ce que vous transférez est ce qui va faire la plus grande différence (ne pas choisir entre HTML et JSON)
- Une chose qui pourrait être prise en considération, cependant, est de quelles ressources vous aurez besoin sur le client pour recréer le HTML (ou la structure DOM) à partir des données JSON ... comparez cela à pousser une partie de HTML dans la page; -)
Enfin, une chose qui compte vraiment:
- Combien de temps cela vous prendra-t-il pour développer un nouveau système qui enverra des données sous forme de code JSON + le JS requis pour l'injecter en HTML dans la page?
- Combien de temps faut-il pour renvoyer simplement du HTML? Et combien de temps si vous pouvez réutiliser une partie de votre code côté serveur déjà existant?
Et pour répondre à une autre réponse: si vous devez mettre à jour plus d'une partie de la page, il y a toujours la solution / hack d'envoyer toutes ces parties dans une grande chaîne qui regroupe plusieurs parties HTML et d'extraire les parties pertinentes dans JS.
Par exemple, vous pouvez renvoyer une chaîne 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 -->
Cela n'a pas l'air vraiment bien, mais c'est vraiment utile (je l'ai utilisé plusieurs fois, surtout lorsque les données HTML étaient trop grandes pour être encapsulées dans JSON) : vous envoyez du HTML pour les parties de la page qui besoin de présentation, et vous envoyez JSON pour la situation dont vous avez besoin de données ...
... Et pour les extraire, la méthode de sous-chaîne JS fera l'affaire, je suppose ;-)