Heim >Backend-Entwicklung >Golang >Wie aktualisiere ich Vorlagenteilchen in Go dynamisch?

Wie aktualisiere ich Vorlagenteilchen in Go dynamisch?

Linda Hamilton
Linda HamiltonOriginal
2024-12-24 10:52:15524Durchsuche

How to Dynamically Update Template Partials in Go?

Vorlagenteile in Go dynamisch aktualisieren

In Go ist die Möglichkeit, einen Teil einer Vorlage zu aktualisieren, wenn eine Variable geändert wird, nicht von Natur aus vorhanden unterstützt. Um diese Funktionalität zu erreichen, muss eine benutzerdefinierte Lösung implementiert werden.

Implementierungsschritte:

  1. Refactor-Vorlagen: Extrahieren Sie den Abschnitt, der das rendert Adressen in einen separaten Vorlagenblock mit {{define "Addresses"}} oder {{block "Adressen"}}.
  2. Handler ändern/erstellen: Erstellen Sie einen Handler, der ausschließlich die Adressenvorlage ausführt und die Ausgabe an die HTTP-Antwort sendet. Dieser Handler kann unabhängig oder innerhalb des Handlers für die Ganzseitenvorlage verwendet werden.
  3. Clientseitige Logik: Führen Sie auf der Clientseite bei Bedarf einen AJAX-Aufruf an den Adressenhandler aus Aktualisieren Sie die angezeigten Adressen. Ersetzen Sie den Inhalt des Addresses-Wrapper-Elements durch die Antwort des AJAX-Aufrufs.

Schritte im Detail:

  1. Vorlage Refactoring:

    {{define "Addresses"}}
      <ul>
      {{range $key, $value := .Addresses}}
     <li>{{ $key }}: {{ $value }}</li>
      {{end}}
      </ul>
    {{end}}
  2. Handler-Modifikation:

    import "net/http"
    
    func AddressesHandler(w http.ResponseWriter, r *http.Request) {
      data := map[string]string{"Addresses": []string{"Address1", "Address2"}}
      t, err := template.New("AddressesTemplate").Parse("{{define "Addresses"}}{{.Addresses}}{{end}}")
      if err != nil {
     http.Error(w, http.StatusInternalServerError.String(), http.StatusInternalServerError)
     return
      }
      err = t.ExecuteTemplate(w, "Addresses", data)
      if err != nil {
     http.Error(w, http.StatusInternalServerError.String(), http.StatusInternalServerError)
     return
      }
    }
  3. Client-Seite Implementierung:

    var addressesElement = document.getElementById("addresses");
    
    function refreshAddresses() {
      var xhr = new XMLHttpRequest();
      xhr.open("GET", "/addresses", true);
      xhr.onreadystatechange = function() {
     if (xhr.readyState === 4 && xhr.status === 200) {
       addressesElement.outerHTML = xhr.responseText;
     }
      };
      xhr.send();
    }

Alternatives Framework:

Gowut ist ein Go-Web-Framework, das ähnliche Funktionen für dynamische Teilaktualisierungen bereitstellt Webseiten.

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich Vorlagenteilchen in Go dynamisch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn