Heim >Backend-Entwicklung >Golang >Können Go-Vorlagen dynamisch teilweise aktualisiert werden?
Dynamische Teilaktualisierung der Vorlage in Go
Frage:
Ist eine dynamische Aktualisierung möglich? nur ein bestimmter Teil einer Go-Vorlage, wenn eine Variable Updates?
Antwort:
Obwohl die Standard-Template-Engine in Go diese Funktion nicht nativ unterstützt, ist eine benutzerdefinierte Implementierung möglich. Hier ist eine Schritt-für-Schritt-Anleitung:
1. Vorlagen-Refactoring:
Trennen Sie die Vorlage, die das Adressarray rendert, mithilfe der Aktionen {{define "name"}} und {{template "name"}} in eine eindeutige Vorlage.
2. Handler-Änderung/Erstellung:
Erstellen Sie einen Handler, der ausschließlich die eigenständige Adressvorlage ausführt und seinen HTML-Code direkt an die Antwort ausgibt. Dieser Handler kann entweder sowohl die gesamte Seiten- als auch die Teilvorlage verarbeiten oder er kann ausschließlich der Adressvorlage gewidmet sein.
3. Clientseitige Änderung:
Wenn das Adressarray aktualisiert werden muss, lösen Sie einen AJAX-Aufruf an den Handler aus, der die Adressvorlage rendert. Ersetzen Sie nach Erhalt der Antwort den Inhalt im Wrapper-Tag des Adresselements durch den Antwort-HTML.
Hier ist ein Beispiel-JavaScript-Code für den AJAX-Aufruf und die DOM-Manipulation:
var e = document.getElementById("addressees"); var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { e.outerHTML = xhr.responseText; } } xhr.open("GET", "path-to-addresses-render", true); try { xhr.send(); } catch (err) { // Handle error }
Zusätzlicher Hinweis:
Bibliotheken von Drittanbietern wie Gowut bieten ähnliche Funktionen für die teilweise Aktualisierung von Vorlagen. Weitere Informationen finden Sie im Gowut-Quellcode, insbesondere in der JavaScript-Funktion rerenderComp() in der Datei js.go.
Das obige ist der detaillierte Inhalt vonKönnen Go-Vorlagen dynamisch teilweise aktualisiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!