Go: HTML コメントが謎に消えました
Go Web アプリケーションで、HTML コメント
!---- ->新しい Go バージョンに更新すると、レンダリングされなくなります。この予期しない動作は、コンテナレス制御フロー構文に依存する KnockoutJS コードに干渉しているようです。問題
問題の核心は、によって採用されているエスケープ メカニズムにあります。 html/テンプレートパッケージ。デフォルトでは、テンプレートの実行中にコメントはエスケープされ、省略されます。解決策: Template.HTML
この問題を回避するには、html から template.HTML タイプを導入します。 /テンプレートパッケージ。この型の値は、テンプレートのレンダリング中にエスケープの対象になりません。カスタム関数の登録
template.HTML を利用するには、safe( という名前のカスタム関数を登録します。 ) をテンプレートに追加します。この関数は文字列引数を template.HTML に変換し、エスケープを防ぎます。使用法
safe() 関数を呼び出して HTML コメントを変更します。元のコメント文字列を引数として使用します。例:{{safe "<-- Some HTML comment -->"}}
実装
<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>
出力
<code class="html"><html><body> <!-- This is a comment --> <div>Some <b>HTML</b> content</div> </body></html></code>
考慮事項
以上がGo Web アプリケーションで HTML コメントが表示されなくなるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。