Я создаю приложение Rails, которое использует Pusher для использования веб-сокетов для отправки обновлений непосредственно клиенту. В javascript:
channel.bind('tweet-create', function(tweet){ //when a tweet is created, execute the following code:
$('#timeline').append("<div class='tweet'><div class='tweeter'>"+tweet.username+"</div>"+tweet.status+"</div>");
});
Это неприятное смешение кода и представления. Поэтому естественным решением было бы использовать шаблон javascript. Возможно, eco или усы:
//store this somewhere convenient, perhaps in the view folder:
tweet_view = "<div class='tweet'><div class='tweeter'>{{tweet.username}}</div>{{tweet.status}}</div>"
channel.bind('tweet-create', function(tweet){ //when a tweet is created, execute the following code:
$('#timeline').append(Mustache.to_html(tweet_view, tweet)); //much cleaner
});
Это хорошо и все такое, кроме того, что я повторяюсь . Шаблон усов на 99% идентичен шаблонам ERB, которые я уже написал для рендеринга HTML с сервера. Предполагаемый результат / назначение шаблонов усов и ERB на 100% одинаковы: превратить объект твита в твит html.
Как лучше всего устранить это повторение?
ОБНОВЛЕНИЕ: Хотя я ответил на свой собственный вопрос, я действительно хочу видеть другие идеи / решения от других людей - отсюда и награда!