Auf einer E-Commerce-Website möchte ich beim Hinzufügen eines Artikels zu einem Warenkorb ein Popup-Fenster mit den verfügbaren Optionen anzeigen. Stellen Sie sich vor, Sie bestellen einen iPod Shuffle und müssen nun die Farbe und den Text für die Gravur auswählen.
Ich möchte, dass das Fenster modal ist, also verwende ich einen Leuchtkasten, der von einem Ajax-Aufruf ausgefüllt wird. Jetzt habe ich zwei Möglichkeiten:
Option 1: Senden Sie nur die Daten und generieren Sie das HTML-Markup mit JavaScript
Das Schöne daran ist, dass die Ajax-Anforderung auf ein Minimum reduziert wird und die Daten nicht mit dem Markup gemischt werden.
Das Schöne daran ist, dass ich jetzt JavaScript für das Rendern verwenden muss, anstatt dass es auf der Serverseite von einer Vorlagen-Engine ausgeführt wird. Möglicherweise kann ich den Ansatz mithilfe einer clientseitigen Templating-Lösung ein wenig aufräumen .
Option 2: Senden Sie das HTML-Markup
Das Gute daran ist, dass ich dieselbe serverseitige Templating-Engine verwenden kann, die ich für den Rest meiner Rendering-Aufgaben (Django) verwende, also das Rendern des Leuchtkastens. JavaScript wird nur verwendet, um das HTML-Fragment in die Seite einzufügen. Das Rendering wird also eindeutig der Rendering-Engine überlassen. Für mich ergibt das Sinn.
Aus irgendeinem Grund ist es mir jedoch unangenehm, Daten und Markups in einem Ajax-Aufruf zu mischen. Ich bin mir nicht sicher, warum mir das unangenehm ist. Ich meine, es ist die gleiche Art und Weise, wie jede Webseite bedient wird - Daten plus Markup - richtig?
Antworten:
JSON sollte nur die Daten und kein Markup enthalten. Auf lange Sicht ist dieser Ansatz erweiterbarer, da die JSON-Daten möglicherweise in anderen Teilen Ihrer Site verwendet werden. Wenn Sie Markup einschließen, wird es viel schwieriger, dieselben Daten zum Auffüllen einer anderen Vorlage zu verwenden.
quelle
Ich würde die Daten in der Anfrage senden und das Markup in js aufbauen. Ein zusätzlicher Vorteil wäre, dass weniger Bandbreite verbraucht würde. Es ist eine Art persönliche Präferenz, aber es ist wahrscheinlich eine bessere Idee, das clientseitige Markup von der Serverseite fernzuhalten. Ich habe auch eine Django-Website und benutze das Templating-System nur, um einige Json-Variablen auf der Seite zu platzieren (eine Ajax-Datei weniger ist erforderlich) und um src-Dateien zu verwenden, wenn ich auf meinem Computer entwickle. Die gesamte Clientseite wird mit ExtJS ausgeführt.
quelle
Ich denke, Sie sprechen über die Vor- und Nachteile von beiden. Schauen Sie sich eine dritte Möglichkeit an, das Javascript für Ihren Leuchtkasten aus einer Django-Ansicht zu generieren. Haben Sie dann in Ihrem JSON nur die Daten, um sie für jede Ansicht zu aktualisieren?
Sie sollten in der Lage sein, den gesamten Templating-Code in Javascript-Variablen zu packen und diese dann mit Javascript auszugeben, nachdem die JSON-Anfrage auf der Clientseite eingegangen ist.
quelle
Verwenden Sie die Vorlagen-Engine zum Markieren und bewahren Sie ein verstecktes Feld auf, um Werte zu speichern, die Sie dann mithilfe eines Selektors im Dokument finden können.
quelle