2011-08-12 81 views
4

當在服務器(使用rails)和客戶端(使用javascript)上使用Mustache時,是否有任何關於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

我發現最好的方法是使用Node.js和Express webserver,RequireJS,Backbone.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

不熟悉,在軌道上的語法紅寶石,但這裏是我的看法:

一)爲什麼要生成服務器端的標記如果你仍然想保留你的服務器端渲染引擎,那麼你可以做什麼(如果可能的話)總是發送json數據給客戶端並讓js鬍鬚引擎處理它

b)將所有的鬍鬚模板保存在一個文件夾中,編寫一個腳本,在您的構建過程中執行腳本(或在軌道上使用ruby進行等效處理)通過正確的命名約定將所有模板組合成一個良好範圍的JS文件。

東西如下:

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

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

你認爲這種做法有什麼看法?現在你有你的模板生活在一個單一的位置,你也得到緩存的js文件的優勢

+0

不錯的方法,+1 – apneadiving

+0

我寧願使用

  • 11. 縮放:服務器端與客戶端呈現
  • 12. 在服務器上呈現客戶端側圖
  • 13. 服務器和客戶端
  • 14. Node.js服務器,向客戶端和客戶端導入和導出數據
  • 15. JavaScript中的客戶端服務器端
  • 16. 在服務器和客戶端呈現不同的反應路由器鏈接
  • 17. Web服務客戶端和服務器
  • 18. ASP.NET客戶端與服務器視圖呈現
  • 19. 在服務器和客戶端共享代碼中呈現畫布界面
  • 20. Jsreport在從客戶端和服務器呈現時顯示不同的結果
  • 21. 客戶端和服務器端
  • 22. 客戶端和服務器端驗證
  • 23. 客戶端和服務器端
  • 24. 服務器端和客戶端方法
  • 25. 在服務器和客戶端
  • 26. JsonResult是在客戶端和服務器
  • 27. 服務器和客戶端在java
  • 28. 在服務器和客戶端報告
  • 29. 在服務器和客戶端
  • 30. 你可以使用Django爲客戶端動態呈現JavaScript服務器