我在网上搜索了一段时间寻找教程,但没有太多运气。
根据我的理解,Twitter在rails中使用一个Mustache.js模板在第一页加载时从服务器渲染,然后通过他们自己的ajax过渡系统(很像sammy.js)。
我可以把把手和sammy.js加载到rails中,但我无法弄清楚如何从服务器(rails)&中分享单个模板文件。客户(sammy)方。
答案 0 :(得分:4)
我没有亲自构建任何我使用相同模板服务器端和客户端的东西,但这是我可以想到的一种方式。
假设你有一个局部图像(_image.mustache):
<div class="image">
<a href="{{ view_url }}">
<img height="{{ height }}" width="{{ width }}" src="{{ src }}" />
</a>
</div>
当您渲染页面服务器端时,您可以将其用作普通部分并为Mustache插入它。然后,您还可以在脚本标记中呈现它以使用Resig micro-templating scheme。
{{{image_js_template}}}
在您的Mustache视图类中:
def image_js_template
content_tag :script, :type => "template", :id => "image-template" do
render :text => self.partial('image')
end
end
这应该使模板不插入({{仍然在文本中)。现在你可以通过它的id在你的Javascript中选择这个模板。在backbone.js中你可以做类似的事情:
class Views.AllImageList extends Backbone.View
initialize: (options) ->
@template = $('#image-template').html()
我没有使用过Sammy.js,但似乎它希望所有这些模板都是公开的,这可能会出现问题。但是,您仍然可以使用上述技术并直接传递render()和partial()jQuery对象(如here所示)。
这是基本的想法,但你可以做很多事情来使这更加无缝。我会结账the Jammit section on using templates,特别是关于使用Mustache的部分。此外,ICanHaz.js还有一种简化客户端Mustache模板使用的方法。