在 Go 中动态更新模板部分
在 Go 中,修改变量时刷新模板的一部分的能力并不是天生的支持。要实现此功能,必须实现自定义解决方案。
实现步骤:
详细步骤:
模板重构:
{{define "Addresses"}} <ul> {{range $key, $value := .Addresses}} <li>{{ $key }}: {{ $value }}</li> {{end}} </ul> {{end}}
处理程序修改:
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 } }
客户端实现:
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(); }
替代框架:
Gowut 是一个 Go Web 框架,为动态部分更新提供类似的功能网页。
以上是如何在 Go 中动态更新模板部分?的详细内容。更多信息请关注PHP中文网其他相关文章!