問題タブ [go-html-template]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
3866 参照

go - 機能しない場合は単純な go テンプレート

そのため、構造体からブール値をチェックする単純な if チェックを行っていますが、動作していないようで、HTML のレンダリングを停止するだけです。

したがって、次の構造体は次のようになります。

これで、範囲とともに表示できる Category 構造体のスライスができました。

以下は、1 つの構造体の例です。

以下のように複数の方法を試しましたが、どれもうまくいきませんでした。

0 投票する
1 に答える
306 参照

go - ネストされたテンプレートがレンダリングされていません: Golang

perl のアプリケーションは、バナーをレンダリングするために SSI 経由で golang のヘッダーを呼び出します。golang では、ヘッダー テンプレート {gold_shop_header.shtml} に別のテンプレート {reputation_level_info.html} が含まれています。問題は、含まれているテンプレートのコンテンツがレンダリングされていないことです。

参照用のコード:

何が間違っているか提案してください。私はゴランが初めてです。含まれているテンプレートがレンダリングされていません。また、メイン テンプレートについては、{{ define "Gold Banner"}} ステートメントを削除するとレンダリングされますが、このステートメントを含めると何もレンダリングされません。エラーは報告されません。

0 投票する
4 に答える
17369 参照

go - golang html/template で float をフォーマットする

ファイルで言うfloat64golangで値を小数点以下2桁にフォーマットしたい。ファイルでは、次のようにフォーマットできます。html/templateindex.html.go

しかし、テンプレートでフォーマットする方法がわかりません。gin-gonic/ginバックエンドにフレームワークを使用しています。どんな助けでも大歓迎です。ありがとう。

0 投票する
1 に答える
638 参照

go - golangの異なるインターフェースを使用して、単一のWebページで複数のテンプレートを実行する方法は?

変な質問ですみません。自分の問題を 1 つのステートメントで正確に述べる方法がわかりませんでした。

Web ページ、ヘッダー、レイアウト、フッターに 3 つのテンプレートがあります。

テンプレート ヘッダーには、カテゴリ ドロップダウン メニューがあり、go コードにはサブメニュー項目を含む文字列のスライスがあります。

テンプレートヘッダーには次のhtmlコードがあります

だから私がするとき、

それは私に見栄えの良いヘッダーを与えますが、私はする必要があります

メインページ用。レイアウト テンプレートの構造は次のとおりです。

両方の execute template ステートメントを一緒に使用すると、明らかに 2 つの異なるヘッダーが得られます。

テンプレート レイアウトからテンプレート ヘッダーを削除すると、視覚的な出力は完璧ですが、html コードを見ると、メニュー バーは "link rel" ステートメントの上にあります (覚えておいてください、{{template " の上に "いくつかの html コード" がありました)。 header"}} ) であり、これは明らかに良くありません。

両方のテンプレートがそれぞれの構造体を使用して同時に実行されるようにするにはどうすればよいですか?

0 投票する
0 に答える
43 参照

templates - テンプレート内の 1 つの値に基づいて複数の Go サブテンプレートから選択する

私は初心者の Go (および Go テンプレート) のアマチュア プログラマーであり、この質問のバリエーションが尋ねられているのを見てきましたが、まったく同じ方法ではなかったので、ここでもう一度言います...

追加の関数を登録せずに次のことを試みています(そのため、制限されたテンプレート構文で許可されているものに厳密に制限しています):

HTML のいくつかの異なるスニペットがあり、それぞれが独自のテンプレートを持っているA.tplB.tplC.tplます。例が示すようにサブテンプレート)。

次に、共通のヘッダー、フッター、メニューなどを設定するメイン テンプレートと、それぞれを囲む必要な HTML を で作成しますmain.tpl。次のような非常に単純なものです。

または、呼び出しコードがどのように行われたかによって、これは次のように書くこともできます (サブテンプレートの名前を値として に渡すと仮定しますmain.tpl):

明らかに、(テンプレート レベルで) 書くことが明らかなのは次のようなものです。

しかしもちろん、それは構文的に無効templateです。パラメータとして値/変数ではなく、文字列定数しか使用できないためです (右?)

テンプレートのステートメントの長いリストを強制する背後にある理由はif、この種のプログラミング スタイルは、少なくとも言語の「標準」レベルでは、テンプレートから取り出されるべき「ロジック」と見なされるためのようです。Go プログラマーは、テンプレート エンジン (= プレゼンテーション層) に固有の「ロジック」があると考えてはいけません。もちろん、何がロジックと見なされ、何がそうでないかを議論するのは私次第ではありません (if特定の値が等しいかどうかをテストし、それらの値に応じて異なるブロックを実行するステートメントは、私にとって最も確実に「ロジック」ですが、どうやら Go 開発者向けではありません)。

数年前にも同様の質問がありましたが、その答えは OP にとって決して満足のいくものではありませんでした。基本的に、私が理解している限り、いくつかの選択肢があります。

  1. テンプレート コードを拡張して、最終的に同等の switch ステートメントを作成する新しい関数を定義します。これにより、少なくともいくつかの{{ if ... end }}構造を節約できますが、私にとっては、ワンライナーの単純さと読みやすさにはまだ欠けています。
  2. html/templateテンプレートの構文を変更するためにパッケージ全体をハッキング (または、拡張...) します。これは、 4 年前に @Intermernet によって行われたとされています。もちろん、これは有効な演習ですが、標準の Go ライブラリから離れることを意味します。それが選択である場合、そこには Go 用のテンプレート エンジンがたくさんあります。そのうちの 1 つを使い始めるのは気が進まないのですが、数年後には、作成者がプロジェクトを放棄したため、それが時代遅れになっていることに気付きました。標準ライブラリでは、(少なくとも Google が存在し、Ken Thompsonがまだ生きている間は) 発生しません。
  3. Go 側で使用するサブテンプレートのすべての処理を行います。これは当然実現可能ですが、(IMHO) コードが読みにくくなります。もちろん、私は Go プログラマーの間、「慣用的な」(しかし従うのが難しい) コードを書くことに熱心な人々と、Go コードを書くさまざまな方法を持つ他の多くの派閥との間のイデオロギーの戦いを認識しています。個人的に、私は最小のサプライズキスの原則を守っています— 私は自分のコードを書いてから 10 年後でも理解できるようにしたいと思っています :)

テンプレートの構文は、私が説明したことを可能にする方向に進化したのでしょうか (実際に機能する例が見つからなかったのは残念でした)、それとも Go コードを複雑にするか、別の非標準の Go テンプレート エンジンを使用することにまだこだわっていますか?この単純なタスクを達成するには?

ご意見をお寄せいただきありがとうございます。私はまだGoテンプレート構文の初心者であり、実際に私が望むものを許可することを望んでいます.templateキーワードが変数を受け入れられるようにするために、いくつかの厄介な記号を追加する必要があります.文字列定数の代わりに、これまでのところ私を逃してきた何か:-)

0 投票する
0 に答える
33 参照

go - テーマをレイアウトとして実装

ブログの追加レイアウトとしてHugo の HUGRID テーマを実装しようとしています (現在Cactus-plus テーマを使用しています) が、Hugo のテンプレートについてはほとんど何も知りません。レイアウトとしてコーディングする必要がありますか、それとも特定のページのHUGRIDテーマ内でテーマを使用できますか?cactus-plus