Go テンプレートで HTML コメントが表示されない - 解決済み
Go アプリケーションでは、HTML テンプレートを使用すると、HTML コメントがデフォルトでレンダリングされません。これにより、KnockoutJS のコンテナレス制御フロー構文を使用する場合など、特定のシナリオで問題が発生する可能性があります。この問題に対処するには、template.HTML を利用して、テンプレートの実行中に HTML コメントを保持できます。
template.HTML を使用する 1 つの方法は、safe() と呼ばれるカスタム テンプレート関数を定義することです。この関数は文字列を引数として受け取り、それを template.HTML として返します。 HTML コメントをsafe()関数を介して渡すことにより、安全であるとマークすることができ、テンプレートのレンダリング中にエスケープまたは省略されなくなります。
例は次のとおりです:
<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() 関数を利用するには、次のようにテンプレート内の HTML コメントを変更して、safe() 関数呼び出しを含めます。
<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 パッケージのコンテキスト依存エスケープを使用します。
以上がHTML コメントが Go テンプレートに表示されないのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。