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へのアクセスする前のチェック処理を実装してみたかったので
テンプレート読込みするようにしました。
ややこしい作りにすると、今回のようにはまってしまうので
できるだけシンプルな作りを心がけよう。