Go HTML 주석이 렌더링되지 않음: template.HTML을 사용한 솔루션
Go 웹 애플리케이션에서 렌더링된 페이지에서 HTML 주석이 사라짐 실망스러운 문제가 될 수 있습니다. 이는 컨테이너 없는 제어 흐름 구문에 의존하는 KnockoutJS 코드에서 특히 문제가 됩니다.
이 동작의 이유는 기본적으로 Go의 html/템플릿 패키지가 보안상의 이유로 HTML 콘텐츠를 이스케이프하기 때문입니다. 이는 로 묶인 HTML 주석이 주석으로 표시되는 대신 이스케이프된 텍스트로 렌더링된다는 의미입니다.
이 문제를 해결하기 위해 html/template 패키지는 특수 유형을 제공합니다. template.HTML이라고 합니다. 이 유형의 값은 렌더링될 때 이스케이프되지 않습니다.
사용자 정의 함수 접근 방식
한 가지 효과적인 솔루션은 템플릿에 HTML 주석을 래핑하는 템플릿용 사용자 정의 함수를 만드는 것입니다. .HTML. 이를 수행하는 방법은 다음과 같습니다.
<code class="go">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>
이 예에서는 문자열 인수를 가져와 이를 template.HTML로 반환하는 safe() 함수를 정의합니다. 템플릿 내에서 {{safe "
사용법
이 기술을 사용하려면 HTML 주석을 다음 형식으로 변환하면 됩니다.
<code class="html">{{safe "<!-- Your comment -->"}}</code>
또는
<code class="html">{{"<!-- Your comment -->" | safe}}</code>
이 접근 방식을 사용하면 HTML 주석이 렌더링된 출력에 유지됩니다.
참고:
위 내용은 렌더링된 페이지에서 My Go HTML 주석이 사라지는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!