サーバー側とクライアント側で同じテンプレートを使用したものを個人的に作成したことはありませんが、これを行うために考えられる1つの方法があります。
画像が部分的(_image.mustache)であるとします。
<div class="image">
<a href="{{ view_url }}">
<img height="{{ height }}" width="{{ width }}" src="{{ src }}" />
</a>
</div>
ページをサーバー側でレンダリングする場合、これを通常のパーシャルとして使用し、Mustacheに補間することができます。次に、スクリプトタグでレンダリングして、Resigマイクロテンプレートスキームを使用することもできます。
{{{image_js_template}}}
Mustacheビュークラスの場合:
def image_js_template
content_tag :script, :type => "template", :id => "image-template" do
render :text => self.partial('image')
end
end
これにより、テンプレートが補間されないようになります({{はテキスト内に残ります)。これで、JavascriptでこのテンプレートをIDで取得できます。backbone.jsでは、次のようなことができます。
class Views.AllImageList extends Backbone.View
initialize: (options) ->
@template = $('#image-template').html()
私はSammy.jsを使用していませんが、すべてのテンプレートが公開されていることを期待しているようです。これにより、問題が発生する可能性があります。ただし、上記の手法を使用して、render()およびpartial()jQueryオブジェクトを直接渡すことができます(ここに示されているように)。
これは基本的な考え方ですが、これをよりシームレスにするためにできることはおそらくたくさんあります。テンプレートの使用に関するJammitセクション、特にMustacheの使用に関する部分を確認します。また、 ICanHaz.jsには、クライアント側のMustacheテンプレートの使用を簡素化する方法があります。