>백엔드 개발 >Golang >Go 템플릿에 HTML 주석이 표시되지 않는 이유는 무엇이며 어떻게 해결할 수 있나요?

Go 템플릿에 HTML 주석이 표시되지 않는 이유는 무엇이며 어떻게 해결할 수 있나요?

DDD
DDD원래의
2024-11-02 20:52:30620검색

Why are HTML comments not displayed in Go templates and how can I fix it?

Go 템플릿에 표시되지 않는 HTML 주석 - 해결됨

Go 애플리케이션에서 HTML 템플릿을 사용할 때 HTML 주석은 기본적으로 렌더링되지 않습니다. 이로 인해 KnockoutJS의 컨테이너 없는 제어 흐름 구문을 사용할 때와 같은 특정 시나리오에서 문제가 발생할 수 있습니다. 이 문제를 해결하기 위해 template.HTML을 활용하여 템플릿 실행 중에 HTML 주석을 유지할 수 있습니다.

template.HTML을 사용하는 한 가지 방법은 safe()라는 사용자 정의 템플릿 함수를 정의하는 것입니다. 이 함수는 문자열을 인수로 사용하고 이를 template.HTML로 반환합니다. safe() 함수를 통해 HTML 주석을 전달하면 안전한 것으로 표시될 수 있으며 템플릿 렌더링 중에 이스케이프되거나 생략되지 않습니다.

예:

<code class="go">import (
    "html/template"
    "os"
)

func main() {
    t := template.Must(template.New("").Funcs(template.FuncMap{
        "safe": func(s string) template.HTML { return template.HTML(s) },
    }).Parse(src))
    t.Execute(os.Stdout, nil)
}

const src = `<html><body>
{{safe "<!-- This is a comment -->"}}
<div>Some <b>HTML</b> content</div>
</body></html>`</code>

출력:

<html><body>
<!-- This is a comment -->
<div>Some <b>HTML</b> content</div>
</body></html>

safe() 함수를 활용하려면 다음과 같이 safe() 함수 호출을 포함하도록 템플릿의 HTML 주석을 수정하면 됩니다.

<code class="html">{{safe "<!-- Some HTML comment -->"}}</code>

또는 파이프를 사용합니다. 연산자:

<code class="html">{{"<!-- Some HTML comment -->" | safe}}</code>

따옴표('"')가 포함된 HTML 주석은 아래와 같이 이스케이프해야 합니다.

<code class="html">{{safe "<!-- Some \"HTML\" comment -->"}}</code>

조건부 HTML 주석은 방해가 될 수 있으므로 권장되지 않습니다. html/template 패키지를 상황에 맞게 이스케이프 처리합니다.

위 내용은 Go 템플릿에 HTML 주석이 표시되지 않는 이유는 무엇이며 어떻게 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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