ホームページ > バックエンド開発 > Golang > Go レイアウト テンプレート内で複数の子テンプレートをレンダリングするにはどうすればよいですか?

Go レイアウト テンプレート内で複数の子テンプレートをレンダリングするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-15 05:28:08
オリジナル
835 人が閲覧しました

How to Render Multiple Child Templates within a Go Layout Template?

Go テンプレート: レイアウト内の子テンプレートのレンダリング

質問:

Golang の場合アプリケーション、親レイアウト内で複数の子テンプレートをレンダリングするにはどうすればよいですかtemplate?

Setup:

この問題には、レイアウト テンプレートlayout.htmlと、tags.html、content.html、commentの3つの子テンプレートという4つのテンプレートが関係しています。 html。子テンプレートのデータを保持するために Go 構造体が提供されています。

問題:

各子テンプレートをレンダリングし、結果をレイアウトに結合する方法について疑問が生じます。 template.

実装に進む:

へレイアウト内の子テンプレートをレンダリングするには、次の手順を検討してください:

  1. テンプレート文字列の解析: template.Parse* 関数ファミリーを使用して、レイアウトと子テンプレート文字列を単一のテンプレートに解析します。 .
  2. テンプレート データ オブジェクトの作成: 値を保持するデータ オブジェクトを作成します。すべての子テンプレートに対して。このオブジェクトは後で Execute 関数に渡されます。
  3. レイアウト内の子テンプレートの定義と解析: レイアウト テンプレートで、{{template "childTemplateName"}} ディレクティブを使用して呼び出します。各子テンプレート。 childTemplateName は、子テンプレートの {{define "childTemplateName"}} ディレクティブで割り当てられた名前に対応します。
  4. レイアウト テンプレートを実行します: テンプレート データ オブジェクトを Execute 関数に渡します。この関数はレイアウト テンプレートを実行し、必要に応じて子テンプレートを呼び出し、所定の位置にレンダリングします。

コード例:

package main

import (
    "fmt"
    "html/template"
    "os"
)

// Define the layout template
const layout = `
<html>
    <body>
        {{template "tags"}}
        {{template "content"}}
        {{template "comment"}}
    </body>
</html>`

// Define the child templates
const tags = `{{define "tags"}}
<div>{{.Name}}</div>
{{end}}`

const content = `{{define "content"}}
<div>
ログイン後にコピー

以上がGo レイアウト テンプレート内で複数の子テンプレートをレンダリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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