GOテンプレート
これらのテンプレート言語のいくつかは非常に特殊なユースケースを持ちますが、他の優れた汎用言語です.Jinja 2は、動的に設定ファイルを作成するために使用可能です.
なぜあなたはテンプレートの構文を学ぶ必要があります
多くの現代的なツールがGOで書かれ、テンプレートを使用することができます.2つの主要なユースケースは、動的構成ファイルと書式設定出力です.
goテンプレートを使用するプロジェクトは次のとおりです.
始める
私は読書を推薦するgo template syntax 遊牧民の医者から.
Goテンプレートを使用して独自のプロジェクトを作成しました.任意のJSON入力をレンダリングするので、それは有用な学習ツールになります.
あなたが望むならば、あなたはそれをインストールすることができます
go get
またはdocker image
からdocker hub .ブルーブラウン / パイプ
コマンドラインからJOnテンプレートをJSONにレンダリングする
パイプ
コマンドラインからJOnテンプレートをJSONにレンダリングする
ドック
curl --silent https://jsonplaceholder.typicode.com/users/1 \
| docker run --interactive bluebrown/jpipe \
--newline '{{.name}}'
ローカル
go get github.com/bluebrown/jpipe
用途
go get github.com/bluebrown/jpipe
The templates are executed with the text/template package. That means so they are not injection safe while providing greater flexibility for the user. don't execute untrusted templates!
$ echo '{"place": "bar"}' | jpipe 'lets go to the {{.place}}!'
lets go to the bar!
The template is either read from the first positional argument or from a path specified via --template
or -t
flag.
echo '{"place": "bar"}' | jpipe --template path/to/template
The json input is read from pipe or redirection.
jpipe < path/to/input.json
curl localhost | jpipe
フラグ
-n
-newline
print new line at the end
-t string
-template string
alternative way to specify template
スリ
Sprig functions have been added to provide more…
It takes JSON as input from pipe or redirection and passes the data to a template that is either specified from a file or as positional argument.
By default, the data is rendered in its raw form. It can be an object or array which will become either a map or a slice.
Basic:
# object
$ echo '{ "data": "foo" }' | jpipe
map[data:foo]
# array
$ echo '[1,2]' | jpipe
[1 2]
テンプレートを位置引数として渡す# object
$ echo '{ "data": "foo" }' | jpipe '{{ .data }}'
foo
# array
$ echo '[1,2]' | jpipe '{{ index . 1 }}'
2
上級構文
とは別にbasic syntax nomadのドキュメントでは、以下のテンプレートについての詳細情報です.
文脈
そのことを心に留めておくことが大切だ
.
常に現在のコンテキストを参照します.デフォルトのテンプレートは実際に次のようになります.{{ . }}
関数呼び出し
囲碁テンプレート機能は、彼らが普通である同じ方法と呼ばれています.ファイルを移動しますが、かっことカンマは削除されます.
だから普通
println(item)
なる{{ println . }}
. 1以上の引数がある場合は、コンマのないものを追加します.{{ printf "the size is %f\n" . }}
反復処理
多くの場合、我々は配列の上で、あるいはキーと地図の値さえも範囲にしたい.
データを繰り返し処理する場合
.
現在の反復の項目になります.{{ range . }} ... {{ end }}'
変数に代入してインデックスを取得することもできます.{{ $index, $element := range . }} ... {{ end }}
オブジェクトのキーと値を反復処理するには、次の構文が使用されます.{{ range $key, $val := . }} ... {{ end }}
インデックス関数
場合によっては、配列の要素をインデックスで調べる必要があります.The
index
関数は最初の引数としてスライスをとり、要素のインデックスを2番目の引数として返す.{{ index .mySlice 2 }}
返される要素を変数に代入し、テンプレート内のどこかに使用することもできます.{{ $item := index .mySlice 2 }}{{ $item.title }}
インデックス関数は、マップ内のキーを検索することもできます.{{ index .myMap "some-key" }}
例
あなたは見ることができますthis example on github .
以下は、dev . toタグのある記事をレンダリングする別の例です.
$ curl -s "https://dev.to/api/articles?username=codingsafari&per_page=3" > posts.json
$ jpipe '### {{ println "Posts\n" }}{{range .}}{{ printf "{%% link %s %%}\n" .url }}{{end}}' < posts.json
生出力### Posts
{% link https://dev.to/codingsafari/building-production-grade-container-images-3nhg %}
{% link https://dev.to/codingsafari/advanced-entrypoint-techniques-for-docker-container-3dc %}
{% link https://dev.to/codingsafari/kubernetes-ingress-controller-gpe %}
レンダリングポスト
生産グレードコンテナ画像の構築
ニコブラウン・ ジュン28・ 7分読む
Dockerコンテナのための高度なentrypoint技術
ニコブラウン・ ジュン27・ 4分読む
イングレスコントローラー
ニコブラウン・ ジュン27・ 3分読む
Reference
この問題について(GOテンプレート), 我々は、より多くの情報をここで見つけました https://dev.to/codingsafari/excel-at-devops-with-go-templates-2iogテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol