亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目次
1. text/templatehtml/template理解
2?;茎匹螗抓飑`ト構文
例:簡単な挨拶
3。テンプレート內(nèi)の構造、スライス、およびマップ
スライスで構造體を使用する:
4。制御構造: if 、 range else
5. definetemplateを使用した再利用可能なテンプレートの作成
6. html/templateを安全に使用します
7。ブロックを使用したテンプレート継承( defineblockを介して)
ベースレイアウト( layout.html ):
ページテンプレート:
コードに行く:
8。ベストプラクティス
ホームページ バックエンド開発 Golang Goのテンプレートエンジンのガイド

Goのテンプレートエンジンのガイド

Jul 26, 2025 am 08:25 AM
go テンプレートエンジン

GOのテンプレートエンジンは、HTML/テンプレートにXSS攻撃を防ぐための自動エスケープ機能があるため、テキスト/テンプレートとHTML/テンプレートパッケージを通じて強力な動的コンテンツ生成機能を提供します。そのため、HTMLを生成するときに最初に使用する必要があります。 1。{{{}}構文を使用して、{{{.fieldname}}などの変數(shù)、條件付き判斷、ループを挿入して、構造フィールド、{{if}}および{{range}}にアクセスして論理制御を?qū)g裝します。 2.テンプレートは、構造體、スライス、マップなどのGOデータ構造をサポートし、範囲內(nèi)のドットは現(xiàn)在の反復要素を表します。 3.名前付きテンプレートは、テンプレートディレクティブを定義および再利用することで定義できます。 4。HTML/テンプレートは、HTML特殊文字を自動的にエスケープします。元のHTMLをレンダリングする必要がある場合は、template.htmlタイプを使用する必要がありますが、信頼できる入力のみを使用する必要があります。 5.ブロックを使用して定義してテンプレート継承をシミュレートして、レイアウトの再利用を?qū)g現(xiàn)します。 6.ベストプラクティスには、テンプレートのパルシング、テンプレートでエラーのキャッチング、マークのキャッチ、テンプレートで複雑なロジックの書き込みの避け、Parseglobを介した複數(shù)のテンプレートファイルのロードが含まれます。ポイントシンボル、アクション、およびエスケープルールを正しくマスターした後、GOテンプレートシステムは、安全で信頼できるアプリケーションを構築するための強力なツールになります。

Go \ 'のテンプレートエンジンのガイド

text/templateおよびhtml/templateパッケージにあるGOの組み込みテンプレートエンジンは、単純なテキスト、構成ファイル、HTML Webページであれ、動的なコンテンツを生成するための強力で効率的な方法です。 Goで特に人気があり、安全性とシンプルさが重要です。 GOのテンプレートシステムを最大限に活用できるようにするための実用的なガイドを紹介します。

Goのテンプレートエンジンのガイド

1. text/templatehtml/template理解

GOは、2つの主要なテンプレートパッケージを提供します。

  • text/template :あらゆる種類のテキストの汎用テンプレート(例、構成ファイル、電子メール、CLI出力)。
  • html/templatetext/templateの上に構築されていますが、XSS攻撃を防ぐために自動コンテキスト対応エスケープを備えたHTML専用に設計されています。

? HTMLを生成するときにhtml/templateを使用します。デフォルトではより安全です。

Goのテンプレートエンジンのガイド
輸入 (
    「テキスト/テンプレート」//プレーンテキストの場合
    htmlの「html/テンプレート」//
))

2?;茎匹螗抓飑`ト構文

テンプレートは、ダブルブレース{{ }}を使用してアクションを囲みます。一般的な構成要素は次のとおりです。

  • {{.}} - 現(xiàn)在のデータ(「ドット」)を指します
  • {{.FieldName}} - structのフィールドにアクセスします
  • {{if .Condition}}...{{end}} - 條件論的ロジック
  • {{range .Items}}...{{end}} - スライス、マップ、またはチャネルのループ
  • {{template "name"}} - 名前付きテンプレートを含めます

例:簡単な挨拶

tmpl:= `hello、{{.name}}!`
データ:= struct {name string} {name: "Alice"}
T:= template.new( "グリーティング")
t、_ = t.parse(tmpl)
T.execute(os.stdout、data)
//出力:こんにちは、アリス!

3。テンプレート內(nèi)の構造、スライス、およびマップ

GOテンプレートは、GOデータ構造でシームレスに動作します。

Goのテンプレートエンジンのガイド

スライスで構造體を使用する:

タイプパーソンstruct {
    名前文字列
    趣味[]文字列
}

データ:=人{
    名前:「ボブ」、
    趣味:[] String {"Golang"、 "Hiking"、 "Reading"}、
}

tmpl:= `
名前:{{.name}}
趣味:
{{range .hobbies}}  -  {{。}}
{{終わり}}
`

template.must(template.new( "person")。parse(tmpl))。execute(os.stdout、data)

出力:

名前:ボブ
趣味:
 - ゴーラン
 - ハイキング
- 読む

注: rangeでは、ドット( . )は反復の現(xiàn)在のアイテムに変更されます。


4。制御構造: ifrange else

GOテンプレートは、基本的なロジックをサポートします。

  • {{if .Value}}...{{else}}...{{end}}使用
  • 空のスライス、ゼロ値、ゼロ値はfalseに評価されます
{{if .loggedin}}
  ようこそ、{{.username}}!
{{それ以外}}
  ログインしてください。
{{終わり}}

また、組み込み関數(shù)を使用して値を比較することもできます( eq 、 nelt 、 gtなど):

 {{eq .status "Active"}}}
  <p>ステータス:アクティブ</p>
{{終わり}}

これらの比較関數(shù)は、GOコードではなく、テンプレートの組み込み関數(shù)に由來しています。


5. definetemplateを使用した再利用可能なテンプレートの作成

名前のテンプレートを定義して含めることができます。

 const tmpl = `
{{define "greet"}} hello、{{。}}!{{end}}

{{{Template "Greet" "Alice"}}
{{{Template "Greet" "bob"}}
`

t、_:= template.new( "main")。parse(tmpl)
T.execute(os.stdout、nil)

これは、Webアプリのヘッダー、フッター、または再利用可能なUIコンポーネントに役立ちます。


6. html/templateを安全に使用します

HTMLを生成するときは、常にhtml/templateを使用してXSSを避けてください。

 「HTML/TEMPLATE」をインポートする

データ:= struct {
    コンテンツ文字列
} {content: "<script> alert( &#39;hack&#39;)</script>"}

tmpl:= `<p> {{。コンテンツ}} </p>`
t、_:= template.new( "safe")。parse(tmpl)
T.execute(os.stdout、data)

?出力:

 <p>&lt; script&gt; alert(&#39; hack&#39;)&lt;/script&gt; </p>

コンテンツは自動的に逃げられます。 RAW HTMLが本當に必要な場合は、 template.HTMLタイプを使用します。

タイプページstruct {
    Content Template.html
}

データ:= page {content:template.html( "<strong> safe html </strong>")}

{{.Content}}は、逃げることなくレンダリングします。

??信頼できる入力でのみこれを行います。


7。ブロックを使用したテンプレート継承( defineblockを介して)

Goには直接的な継承はありませんが、 defineおよびtemplateを使用してレイアウトテンプレートをシミュレートできます。

ベースレイアウト( layout.html ):

 <!doctype html>
<html>
<head> <title> {{block "title"。}}デフォルトタイトル{{end}} </title> </head>
<body>
  <header> <h1>私のサイト</h1> </header>
  <main> {{block "content"。}} default content {{end}} </main>
</body>
</html>

ページテンプレート:

 {{define "title"}} home {{end}}
{{define "content"}}
  <p>ホームページへようこそ!</p>
{{終わり}}

コードに行く:

 tpl:= template.must(template.new( "base")。parsefiles( "layout.html"、 "home.html"))
tpl.executetemplate(os.stdout、 "base"、nil)

このパターンを使用すると、モジュール式の再利用可能なレイアウトを構築できます。


8。ベストプラクティス

  • html出力には常にhtml/templateを使用します。
  • cording生産前のテンプレート(リクエストごとに解析しないでください)。
  • amytion初期化中にtemplate.Must()を使用して、早期にエラーをキャッチします。
  • templateテンプレートでロジックを最小限に抑えます。GOコードで重いものを持ち上げます。
  • templatesテンプレートをファイルに編成し、 ParseFilesまたはParseGlobを使用します。
 //フォルダーからすべてのテンプレートをロードします
tpl:= template.must(template.parseglob( "templates/*。html"))

GOのテンプレートエンジンは、他の言語と比較して最小限に感じるかもしれませんが、そのシンプルさ、タイプの安全性、セキュリティ機能により、信頼できるアプリケーション、特にWebサーバーの構築に最適です。

基本的に、ドット、アクション、および逃げるルールのハングを取得すると、GO Toolkitの強固なツールになります。

以上がGoのテンプレートエンジンのガイドの詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Goのテンプレートエンジンのガイド Goのテンプレートエンジンのガイド Jul 26, 2025 am 08:25 AM

GOのテンプレートエンジンは、HTML/テンプレートにXSS攻撃を防ぐための自動エスケープ機能があるため、テキスト/テンプレートとHTML/テンプレートパッケージを通じて強力な動的コンテンツ生成機能を提供します。そのため、HTMLを生成するときに最初に使用する必要があります。 1。{{{}}構文を使用して、{{{.fieldname}}などの変數(shù)、條件付き判斷、ループを挿入して、構造フィールド、{{if}}および{{range}}にアクセスして論理制御を?qū)g裝します。 2。テンプレートは、構造體、スライス、マップなどのGOデータ構造をサポートし、範囲內(nèi)のドットは現(xiàn)在の反復要素を表します。 3.名前付きテンプレートは、テンプレートディレクティブを定義および再利用することで定義できます。 4.ht

GOの関數(shù)にスライスを渡す方法は? GOの関數(shù)にスライスを渡す方法は? Jul 26, 2025 am 07:29 AM

スライスを渡すと、スライスヘッダーに基礎となる配列へのポインターが含まれているため、通常は値によって直接渡され、スライスヘッダーのコピーは基礎となるデータをコピーしないため、関數(shù)內(nèi)の要素の変更は元のスライスに影響します。 1.関數(shù)內(nèi)のスライス長を再割り當てまたは調(diào)整し、変更を有効にする必要がある場合は、スライスポインターを渡す必要があります。 2。そうしないと、ポインターを使用せずにスライスを直接渡すことができます。 3.付録を使用するときに再配置がトリガーされる可能性がある場合は、ポインターを通過して、更新されたスライスを外側に表示できるようにする必要があります。したがって、スライス全體を交換しない限り、スライスは値の形で渡す必要があります。

ストリーミングデータについては、Kafkaと統(tǒng)合します ストリーミングデータについては、Kafkaと統(tǒng)合します Jul 26, 2025 am 08:17 AM

GoとKafka Integrationは、高性能のリアルタイムデータシステムを構築するための効果的なソリューションです。適切なクライアントライブラリは、ニーズに応じて選択する必要があります。1。カフカゴーが優(yōu)先され、迅速な開発に適したシンプルなゴースタイルAPIと優(yōu)れたコンテキストサポートを取得します。 2.微細な制御または高度な機能が必要な場合は、サラマを選択します。 3.プロデューサーを?qū)g裝する場合、正しいブローカーアドレス、テーマ、ロードバランス戦略を構成し、コンテキストを通じてタイムアウトと閉鎖を管理する必要があります。 4.消費者は、消費者グループを使用してスケーラビリティとフォールトトレランスを?qū)g現(xiàn)し、オフセットを自動的に送信し、合理的に同時処理を使用する必要があります。 5.シリアル化にはJSON、Avro、またはProtobufを使用すると、Schemaregistrを組み合わせることをお勧めします

Goは何をしますか Goは何をしますか Jul 26, 2025 am 08:52 AM

GovetCatchESCommonLogicalerrorsandsuspicuticalconctustsingocodesuchas1)誤用を誤用することと、sutructioncrectargumentsとの誤用、2)keyedStructlitalals thatmayLeadToEncorectIndignments、3)SendingClosedChannelswhichcausepnics、4)

Goで反射を使用する方法は? Goで反射を使用する方法は? Jul 28, 2025 am 12:26 AM

usereflect.valueofandReft.typeoftogetruntimevaluesAndtypes; 3.MODIFYVALUESVIAREFLECT.VALUE.ELEM()ANDCANSET()abspassingapointer;

HTTPミドルウェアの例で進みます HTTPミドルウェアの例で進みます Jul 26, 2025 am 09:36 AM

GO言語では、HTTPミドルウェアは関數(shù)を通じて実裝され、その中心的な答えは次のとおりです。ミドルウェアは、要求処理の前後に一般的なロジックを?qū)g行するために使用されるhttp.handlerを受信および返す関數(shù)です。 1.ミドルウェア関數(shù)の署名は、FUNC(Middleware(NexThttp.Handler)http.Handler)のようなもので、元のプロセッサをラッピングすることで機能的な拡張を?qū)g現(xiàn)します。 2。例のログミドルウェアは、監(jiān)視とデバッグに便利なリクエスト方法、パス、クライアントアドレス、および処理時間消費を記録します。 3.認証ミドルウェアは認証ヘッダーをチェックし、検証が安全なアクセスを確保できない場合に401または403エラーを返します。 4.複數(shù)のミドルウェアをネストして調(diào)整できます

SwitchステートメントはGOでどのように機能しますか? SwitchステートメントはGOでどのように機能しますか? Jul 30, 2025 am 05:11 AM

Goのスイッチステートメントは、デフォルトでプロセス全體で実行されず、最初の條件に合わせた後に自動的に終了します。 1.スイッチはキーワードで始まり、1つまたはnoの値を持ち運ぶことができます。 2。上から下へのケースマッチは、最初の一致のみが実行されます。 3.複數(shù)の條件をコンマでリストして、同じケースに一致させることができます。 4.手動で休憩を追加する必要はありませんが、強制することができます。 5.デフォルトは、通常最後に配置されている比類のないケースに使用されます。

GOでタイムアウトを処理する方法は? GOでタイムアウトを処理する方法は? Jul 27, 2025 am 03:44 AM

USECONTEXT.WITHTIMEOUTCOCREATEACANCELLECTEXTEXTWITHEDEDLINEANDALWAYSCALLCANCEL()toreLeaSeresources.2.forhttprequests、setimeoutsUsinghttp.client.timeoutorusecontextviahttp.newrequestwestwestwestextextextextfore-requestfore-requestfor-requestfore-requestfore-requestfore-requestfore-requestfore-context

See all articles