
Go에서 템플릿 부분을 동적으로 업데이트
Go에서는 변수가 수정될 때 템플릿의 일부를 새로 고치는 기능이 본질적으로 제공되지 않습니다. 지원됩니다. 이 기능을 구현하려면 맞춤형 솔루션을 구현해야 합니다.
구현 단계:
-
리팩터링 템플릿: {{define "Addresses"}} 또는 {{block을 사용하여 별도의 템플릿 블록에 주소를 추가합니다. "Addresses"}}.
-
핸들러 수정/생성: 주소 템플릿을 독점적으로 실행하고 출력을 HTTP 응답으로 보내는 핸들러를 생성합니다. 이 핸들러는 독립적으로 사용하거나 전체 페이지 템플릿 핸들러 내에서 사용할 수 있습니다.
-
클라이언트 측 논리: 클라이언트 측에서는 필요할 때 주소 핸들러에 대한 AJAX 호출을 수행합니다. 표시된 주소를 업데이트하세요. Addresses 래퍼 요소의 콘텐츠를 AJAX 호출의 응답으로 바꿉니다.
세부 단계:
-
주형 리팩토링:
1 2 3 4 5 6 7 | {{define "Addresses" }}
<ul>
{{range $key , $value := .Addresses}}
<li>{{ $key }}: {{ $value }}</li>
{{ end }}
</ul>
{{ end }}
|
로그인 후 복사
-
핸들러 수정:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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
}
}
|
로그인 후 복사
-
클라이언트측 구현:
1 2 3 4 5 6 7 8 9 10 11 12 | 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 웹 프레임워크입니다. 웹페이지.
위 내용은 Go에서 템플릿 부분을 동적으로 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!