>백엔드 개발 >Golang >Go App Engine에서 자동 다시 로드를 사용하여 계층적 템플릿을 구현하는 방법은 무엇입니까?

Go App Engine에서 자동 다시 로드를 사용하여 계층적 템플릿을 구현하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-03 07:02:13225검색

How to Implement Hierarchical Templates with Automatic Reloading in Go App Engine?

Go AppEngine: 자동 다시 로드가 포함된 계층적 템플릿

질문:

어떻게 구성할 수 있나요? Go AppEngine 애플리케이션의 템플릿을 달성:

  • 계층적 조직
  • HTML 도구와의 호환성
  • 개발 서버에서 자동 템플릿 다시 로드

잠재력 과제:

  • Template.ParseGlob()이 반복되지 않습니다
  • 성능상의 이유로 원시 텍스트 템플릿 업로드는 권장되지 않습니다

해결책:

정리하기 각 패키지가 URL 접두어를 소유하고 자체 템플릿을 포함하는 모듈식 구조를 갖춘 Go AppEngine 프로젝트입니다. 이 접근 방식을 사용하면 일관된 기본 템플릿을 유지하고 각 패키지 내에서 이를 확장할 수 있습니다.

프로젝트 구조 예:

|-- app.yaml
|-- app
|   +-- http.go
|-- templates
|   +-- base.html
+-- github.com
    +-- storeski
        +-- appengine
            +-- products
            |   +-- http.go
            |   +-- templates
            |       |-- list.html
            |       +-- detail.html
            +-- account
                |-- http.go
                +-- templates
                    |-- overview.html
                    |-- notifications.html 

각 패키지의 http.go 파일에서, 소유한 URL에 대한 핸들러를 등록합니다. 예를 들어 제품 패키지는 /products로 시작하는 URL을 처리합니다.

각 패키지 내에서 템플릿을 "templates" 하위 디렉터리에 저장하고 다른 템플릿이 포함된 기본 템플릿(예: template/base.html)을 만듭니다. 확장할 수 있습니다.

개발 서버에서 자동 템플릿 다시 로드를 활성화하려면 템플릿의 변경 사항을 감시하는 사용자 정의 기능을 구현하세요. 디렉토리:

func watchTemplates() {
  ticker := time.NewTicker(1 * time.Second)
  for range ticker.C {
    if err := parseTemplates(); err != nil {
      log.Printf("Error parsing templates: %v", err)
    }
  }
}

메인 패키지에서 watchTemplates()를 호출하여 템플릿 변경 사항을 주기적으로 확인하고 다시 로드합니다. 이렇게 하면 템플릿 업데이트가 애플리케이션에 자동으로 반영됩니다.

위 내용은 Go App Engine에서 자동 다시 로드를 사용하여 계층적 템플릿을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.