> 백엔드 개발 > Golang > Go에서 템플릿 부분을 동적으로 업데이트하는 방법은 무엇입니까?

Go에서 템플릿 부분을 동적으로 업데이트하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-24 10:52:15
원래의
513명이 탐색했습니다.

How to Dynamically Update Template Partials in Go?

Go에서 템플릿 부분을 동적으로 업데이트

Go에서는 변수가 수정될 때 템플릿의 일부를 새로 고치는 기능이 본질적으로 제공되지 않습니다. 지원됩니다. 이 기능을 구현하려면 맞춤형 솔루션을 구현해야 합니다.

구현 단계:

  1. 리팩터링 템플릿: {{define "Addresses"}} 또는 {{block을 사용하여 별도의 템플릿 블록에 주소를 추가합니다. "Addresses"}}.
  2. 핸들러 수정/생성: 주소 템플릿을 독점적으로 실행하고 출력을 HTTP 응답으로 보내는 핸들러를 생성합니다. 이 핸들러는 독립적으로 사용하거나 전체 페이지 템플릿 핸들러 내에서 사용할 수 있습니다.
  3. 클라이언트 측 논리: 클라이언트 측에서는 필요할 때 주소 핸들러에 대한 AJAX 호출을 수행합니다. 표시된 주소를 업데이트하세요. Addresses 래퍼 요소의 콘텐츠를 AJAX 호출의 응답으로 바꿉니다.

세부 단계:

  1. 주형 리팩토링:

    {{define "Addresses"}}
      <ul>
      {{range $key, $value := .Addresses}}
     <li>{{ $key }}: {{ $value }}</li>
      {{end}}
      </ul>
    {{end}}
    로그인 후 복사
  2. 핸들러 수정:

    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. 클라이언트측 구현:

    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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿