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