[開発][REST][jQuery] jTemplate を今更ながら導入

HTMLのコンテンツでAjaxの通信をやろうとすると、どうもHTMLの構文がdomain specificなものになりやすくて*1、また、/blog の返すHTMLコンテンツにeditの為のリンクが必要かどうか、意味的なリンクはハイパーリンクでいいかもしれないが、in-place editor で編集できるようにしたい場合、ハイパーリンクではだめだ、とか葛藤が入る。

で、だったら、テンプレートエンジン自体をクライアント側に持ってこようよ、ということになった。

JavaScript のテンプレートエンジンって、実際どうなの?という話なんだけれど、jQueryプラグインで実装されているjTemplateは非常に使いやすかった。


ただ、ActionView ほど便利なメソッドがないので(jQueryのほかのプラグインを探せばあるのかもしれない)、

    {#param name=count value=0}
    {#foreach $T as setting}
    {#if $P.count % 2 == 0}
    <tr class="even">
    {#else}
    <tr class="odd">
    {#/if}
    </tr>
    {#param name=x value=$P.count+1}
    {#/for}

な感じで、少し過去にさかのぼってしまった感はある。一方で、コントローラークラスは

    respond_to do |format|
      format.xml  { render :text => @settings.to_xml,   :status => 200 }
      format.json { render :text => @settings.to_json , :status => 200 }
    end

と format.html が要らなくなって万歳!!

*1:特に、ページを混合(マッシュアップ)できるようにしていると、DOM IDの衝突回避のためにDOM Treeが冗長になりがち...