Mit Ajax ist es besser, zusätzliches Markup auf der Server- oder der Client-Seite zu generieren?

8

Was ist besser in AJAX-Anfrage, Antwort mit fertigen HTML oder Antwort mit nur Daten und schreiben HTML mit JavaScript, und dieses JavaScript wird eine vordefinierte HTML-Vorlage verwenden, um die kommenden Daten hinein und zeigen auf der Seite.

Wenn Sie den HTML-Code auf dem Server erstellen und an die Seite senden, wird der clientseitige JS-Code verringert, die Antwortgröße wird jedoch erhöht.

Durch das Senden der Daten an die Clientseite wird die Antwortgröße verringert, der JS-Code wird jedoch erhöht.

Was ist besser und am meisten benutzt?

    
Amr Elgarhy 28.06.2009, 22:17
quelle

5 Antworten

5

Ich denke, die richtige Lösung hängt stark vom Kontext ab. Es kann eine richtige Antwort für eine bestimmte Situation geben, aber es gibt keine Antwort für alle. Im Allgemeinen, wenn ich eine Teilansicht verwende, die über AJAX ersetzt wird, gebe ich html zurück. Wenn ich eine Aktion für einen kleinen Teil von etwas ausführe, verwende ich JSON. Ich werde wahrscheinlich JSON eher verwenden, da es mehr Situationen gibt, in denen es passt, aber ich versuche, die beste Lösung für das vorliegende Problem auszuwählen. Ich benutze jedoch ASP.NET MVC. Andere Frameworks haben zweifellos unterschiedliche charakteristische Lösungen.

    
tvanfosson 28.06.2009, 22:25
quelle
4

Ich habe beide benutzt gesehen. Zusätzlich zu den im OP aufgeführten Kompromissen würde ich hinzufügen:

  • Es ist besser, die Informationen als Daten zu senden, nicht als HTML, da Sie dann mehr Möglichkeiten haben, wie Sie sie verwenden werden.
  • Was ist dein Komfortlevel mit JS?
  • Sie können mehrere Benutzeroberflächen (auf verschiedenen Seiten) verwenden und die Daten auf der Seite erneut verwenden. ZB die Daten in einer kurzen Form und in einer langen Form anzeigen, aber die gleiche Datenquelle verwenden. - Lassen Sie den Client auf einer Seite zwischen den beiden wechseln, ohne dass eine Server-Reise erforderlich ist.
  • Eine reine JS-Implementierung des liquiden Vorlagensystems ist für das clientseitige Templating verfügbar: Ссылка

Larry

    
Larry K 28.06.2009 22:26
quelle
3

Ich werde hier extrem pragmatisch sein:

Es hängt von der Menge und der Komplexität des neuen Markups ab.

Wenn Sie ein komplexes Stück HTML zurückgeben müssen, ist es immer besser, es auf der Serverseite zu schreiben und es als Daten zurückzugeben, es ist auch einfacher zu pflegen. Der Aufbau von komplexem HTML auf der Client-Seite ist normalerweise kryptisch, selbst wenn moderne js-Bibliotheken verwendet werden. Auf der anderen Seite, wenn Ihr Extra-Markup klein ist, können Sie es mit js erstellen. Ich habe noch nie etwas mit ASP.NET AJAX gemacht, aber eine asp.net-Seite, eine rails-Ansicht oder eine JSP mit nur einem kleinen Fragment wie <p class='info'>Row Updated</p> zu haben, ist verwirrend.

Lassen Sie den Code mit Ihnen sprechen, wenn Sie gegen JavaScript-Code kämpfen, um Markup auf der Client-Seite zu erstellen, sollte es vielleicht auf der Server-Seite gehen.

Schließlich: Machen Sie sich nicht zu viele Gedanken über die Größe von HMTL gegenüber JSON, und wenn Sie dies tun, benchmarken die Anfragen, um zu sehen, ob Unterschied ist nicht zu vernachlässigen.

    
Pablo Fernandez 28.06.2009 22:52
quelle
1

Ich glaube, die gebräuchlichere Methode besteht darin, die Masse des Markups (HTML / CSS) über die synchrone Navigation an die Site weiterzuleiten und die AJAX-Anfrage / Antwort so schlank wie möglich zu halten [Zitat erforderlich].

Zugegebenermaßen ist es sehr selten, dass HTML als AJAX-Antwort zurückgegeben wird. In der Regel wird es eine JSON-Antwort sein, da es am einfachsten ist, eval() mit JS zu erstellen.

Da die meisten Markup- und Styling-Klassen ohnehin benötigt werden und auch von "statischen" Inhalten genutzt werden können, bleibt Ihnen die Möglichkeit, den AJAX klein und ordentlich zu halten.

    
Yuval Adam 28.06.2009 22:22
quelle
0

Wenn Sie kleine Bildschirmteile aktualisieren, können Sie das JSON normalerweise zurück an den Client senden, und der Client kann sich leicht selbst aktualisieren. Wenn Sie versuchen, ein kompliziertes Grid zu erstellen, verwenden Sie besser ein UpdatePanel.

    
azamsharp 29.06.2009 03:39
quelle

Tags und Links