5

チュートリアルを探してしばらくウェブを検索しましたが、あまり運がありませんでした。

私の理解では、TwitterはRailsで単一のMustache.jsテンプレートを使用して、最初のページの読み込み時にサーバーからレンダリングし、次に独自のajax遷移システム(sammy.jsのように)を介してレンダリングしています。

ハンドルバーとsammy.jsをrailsにロードすることはできますが、サーバー(rails)側とclient(sammy)側から単一のテンプレートファイルを共有する方法がわかりません。

4

1 に答える 1

4

サーバー側とクライアント側で同じテンプレートを使用したものを個人的に作成したことはありませんが、これを行うために考えられる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テンプレートの使用を簡素化する方法があります。

于 2011-04-24T16:32:07.737 に答える