2011-08-12 11 views
4

サーバ(レール付き)とクライアント(javascript付き)を使用している場合のMustacheのベストプラクティスに関するドキュメントはありますか?サーバ(レール)とクライアント(JavaScript)で口ひげのレンダリング

# hello_world.mustache 
Hello {{planet}} 

# some other file 
<% 
hello_world_template = File.read(File.dirname(__FILE__) + "/hello_world.mustache") 
%> 

<script id="hello_world_template" type="text/x-jquery-tmpl"> 
    <%= hello_world_template %> 
</script> 

<script> 
    // $.mustache = using mustache.js and a jquery mustache wrapper 
    // search on "Shameless port of a shameless port" 
    document.write($.mustache($("#hello_world_template").html(), { "planet" : "World!" })); 
</script> 

<%= Mustache.render(hello_world_template, :planet => "World!") %> 

上記はスケーラブルではありません。私はこれのために私自身のエンジンを作っていないことを望むだろう。

サーバーとクライアントでテンプレートを再利用できる、より完全なテンプレートエンジンがありますか?

さらに、サーバーとクライアントのネストされたテンプレートを考慮したテンプレートですか?

+0

これを達成する最善の方法は、Express Webサーバー、RequireJS、Backbone.js、および任意のテンプレートエンジンでNode.jsを使用することです。クライアントまたはサーバー上で美しく動作します。 –

答えて

5

利用可能Poirotあり:口ひげ+ Railsの3

+2

私はこれをチェックします、ありがとう。私はアイソトープと呼ばれるものも見たことがあります。それを今読んで。 http://devign.me/isotope-hybrid-ruby-on-rails-template-engine-for-client-side-and-server-side/ –

+0

も問題ありません。 – apneadiving

2

ここレール構文のルビーに慣れてなく、私のテイクです:

a)は、サーバー側でマークアップを生成したいのはなぜ(オプションであれば)常にjsonデータをクライアントに送信してjs口頭エンジンに処理させます

b)サーバーサイドのレンダリングエンジンを維持したい場合、できることあなたのビルド時に実行するスクリプトを書く(または、Ruby on Railsでこれに相当する)すべてのテンプレートを適切な命名規則でうまくスコープされたJSファイルに結合します。

として何かは、次のとおりです。

var MUSTACHE_TEMPLATES= MUSTACHE_TEMPLATES || (function(){ 
var template1= "<big ass template>"; 
var template2="<small template>"; 

return 
{ 
template1: template1, 
template2: template2 
} 
}()); 

あなたはそのアプローチをどう思いますか?今すぐテンプレートを1つの場所に置いて、キャッシュされているjsファイルの利点を得ることができます。

+0

すてきなアプローチ、+1 – apneadiving

+0

私は、Javascript以外の教祖が把握するのがより明示的で簡単なので、むしろ