ブラウザでXMLのテンプレートを書き換えるのに、テンプレートエンジンを利用するかDOMを利用するかを考えている。node.jsだったら、ejsを使うんだけど、クライアントサイドjsだったら何を使うかな。
DOMを使ってやっていたんだけどいろいろ不満がたまるようになってきた。というのもDOMでパースして書き換えてシリアライズすると、出力されたテキストがぐちゃぐちゃになってしまうのがある。たとえば、
<item media-type="image/jpeg" id="i-001" href="image/i-001.jpg"/>
<item media-type="image/jpeg" id="i-002" href="image/i-002.jpg"/>
<item media-type="image/jpeg" id="i-003" href="image/i-003.jpg"/>
<item media-type="image/jpeg" id="i-004" href="image/i-004.jpg"/>
<item media-type="image/jpeg" id="i-005" href="image/i-005.jpg"/>
にしたかったものが、
<item media-type="image/jpeg" id="i-001" href="image/i-001.jpg"/> <item media-type="image/jpeg" id="i-001" href="image/i-001.jpg"/> <item media-type="image/jpeg" id="i-002" href="image/i-002.jpg"/> <item media-type="image/jpeg" id="i-003" href="image/i-003.jpg"/> <item media-type="image/jpeg" id="i-004" href="image/i-004.jpg"/> <item media-type="image/jpeg" id="i-005" href="image/i-005.jpg"/>
こんな風に改行が消えてしまったりする。それだけだったらましだけどネームスペースの書き換えを要求されたりする。だんだん思っていた出力と乖離してきてなんだなかなと思うようになってきている。
テンプレートエンジンの場合は改行なども処理できるの問題が生じにくいように感じる。ただ、テンプレートエンジンの場合に生じる問題はやってみないとわからいないところがある。ブラウザごとの挙動がどうなるかが未知数な部分がある。
テンプレートエンジンの種類が多すぎる問題。テンプレートエンジンの種類が多くて書き方もだいぶ違っているので、流用ができない。イチから勉強のし直しが必要になるという面倒くささがある。というか、メンテされていないテンプレートエンジンが多くてうかつに使えない。
node.jsでejsを使ってたが、テンプレートエンジンによって書き方が全然違う問題。node.jsも作ろうとするとテンプレートエンジン向けに二つ以上を作らないといけなくなってしまう。