Pusherを使用してWebソケットを使用して更新をクライアントに直接プッシュするRailsアプリを構築しています。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 テンプレートを使用することです。おそらくエコまたは口ひげ:
//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
});
これは良いことです。ただし、繰り返します。口ひげのテンプレートは、サーバーから HTML をレンダリングするために既に作成した ERB テンプレートと 99% 同一です。口ひげと ERB テンプレートの意図した出力/目的は 100% 同じです: ツイート オブジェクトをツイート html に変換します。
この繰り返しをなくす最善の方法は何ですか?
更新:私は自分の質問に答えましたが、他の人からの他のアイデア/解決策を見たいと思っています。