Go Web アプリケーションで HTML コメントが表示されなくなるのはなぜですか?

Patricia Arquette
リリース: 2024-11-03 23:45:31
オリジナル
447 人が閲覧しました

Why are HTML comments disappearing in my Go web application?

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>
ログイン後にコピー

考慮事項

  • 構文エラーを防ぐために、HTML コメント内の引用符をエスケープします。
  • 一貫したエスケープを確保するために、条件付き HTML コメントを避けてください。

以上がGo Web アプリケーションで HTML コメントが表示されなくなるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート