読者です 読者をやめる 読者になる 読者になる

golangテンプレートとAngularJSのデリミタがぶつかった

GAE/G上で
・HTMLファイルをテンプレートとして保持
・フロントはAngularJSで表現
・必要な情報は、基本的にajaxでやり取りする
というつくりにしていたが

golang(html/template)で解釈されるデリミタ「{{}}」と
AngularJSのデリミタ「{{}}」がかぶっていたため
golangのテンプレートパース処理でパニックして正常に動作しなかった。

もしかしたらgolang側の

func (t *Template) Delims(left, right string) *Template

を上手く使えばと思って色々試したけど、こちらはダメだった。

結果的に、対策はhtml側(angularjs)に

<div>{{`{{item.name}}`}}</div>

という風にバッククォートで挟んであげたら上手く動いた。
めでたし、めでたし。

わざわざテンプレートとしてHTMLを読込まずにyamlで素直に公開すればいいんだけど
HTMLへのアクセスする前のチェック処理を実装してみたかったので
テンプレート読込みするようにしました。

ややこしい作りにすると、今回のようにはまってしまうので
できるだけシンプルな作りを心がけよう。