Я лично ничего не создавал там, где использовал один и тот же шаблон на стороне сервера и на стороне клиента, но вот один из способов, которым я могу подумать, чтобы сделать это.
Скажем, у вас есть частичное изображение(_image.mustache):
<div class="image">
<a href="{{ view_url }}">
<img height="{{ height }}" width="{{ width }}" src="{{ src }}" />
</a>
</div>
Когда вы визуализируете свою страницу на стороне сервера, вы можете просто использовать это как обычный частичный фрагмент и интерполировать его для Усов.Затем вы также можете отобразить его в теге сценария, чтобы использовать Схему микросхем Resig .
{{{image_js_template}}}
В вашем классе представления Усов:
def image_js_template
content_tag :script, :type => "template", :id => "image-template" do
render :text => self.partial('image')
end
end
Thisдолжен сделать шаблон неинтерполированным (с {{по-прежнему в тексте).Теперь вы можете просто подобрать этот шаблон в своем Javascript по его идентификатору.В backbone.js вы можете сделать что-то вроде:
class Views.AllImageList extends Backbone.View
initialize: (options) ->
@template = $('#image-template').html()
Я не использовал Sammy.js, но, похоже, он ожидает, что все его шаблоны будут доступны для общественности, что может вызвать проблему.Однако вы все равно можете использовать описанную выше технику и передавать объекты render () и part () напрямую (как указано здесь ).
Это основная идея, но, вероятно, существуетмного вы могли бы сделать, чтобы сделать это более плавным.Я бы ознакомился с разделом Jammit по использованию шаблонов , в частности, с разделом об использовании усов.Также ICanHaz.js позволяет упростить использование шаблонов усов на стороне клиента.