2011-08-27 39 views
4

使用Express與Don Park的HBS作爲視圖引擎,目的是爲客戶端和服務器代碼使用相同的模板樣式。不過,我遇到了一些麻煩。使用HBS條帶快速查看渲染(消耗?)Handlebars客戶端模板

這裏顯示的index.hbs,

<h1>{{title}}</h1> 
<p>Welcome to {{title}}</p> 

<div id="place"></div> 

<script id="firstTemplate" type="text/x-handlebars-template"> 
    <ul> 
    {{#lines}} 
     <li>{{name}}</li> 
    {{/lines}} 
    </ul> 
</script> 

繼承人什麼呈現給瀏覽器:

<h1>Express</h1> 
<p>Welcome to Express</p> 

<div id="place"></div> 

<script id="firstTemplate" type="text/x-handlebars-template"> 
    <ul> 

    </ul> 
</script> 

的快速視圖渲染過程似乎已經消耗打算用於在模板塊瀏覽器。據我所知,視圖渲染器只是將整個file.hbs作爲一個字符串臨時值來呈現,而不是將腳本塊與服務器視圖區分開來。

此任何想法/解決方法?

+0

你可以試着改變在腳本標記之前的分隔符「{{= <% %> =}}' – generalhenry

+0

是的,我正在尋找如何做到這一點!不能用Handlebars找到它,所以我修改了ICanHaz的一個副本,使用改變的分隔符對客戶端進行模板化。 你可以分享一個代碼示例來展示如何將此分隔符更改放入文件中嗎? – Sumod

回答

1

我以相同的方式使用Handlebars並遇到同樣的問題。

我工作圍繞它通過存儲這一部分:

<script id="firstTemplate" type="text/x-handlebars-template"> 
    <ul> 
    {{#lines}} 
     <li>{{name}}</li> 
    {{/lines}} 
    </ul> 
</script> 

在一個單獨的靜態文件,然後通過AJAX加載到頁面已經呈現後。這樣我的客戶端模板不會被Express錯誤地渲染。

這將是很好,但如果有一種方法來添加標籤,讓Express知道忽略這樣的塊,並將它們留給客戶端。

1

如果車把與鬍鬚真正兼容,那麼這應該工作:

通過把這個地方在您的模板的頂部(前任何模板佔位符)

{{=<% %>=}} 

所以現在先改變你的分隔符任何你想要的服務器渲染,你會做什麼:

<% foo %> 

而且任何你想要呈現在客戶端上,像這樣:

{{ bar }} 

更多信息在這裏小鬍子手冊底部 - http://mustache.github.com/mustache.5.html

+0

不知道這回答這個問題,因爲OP沒有在任何地方提到鬍子..也是這個解決方案拋出一個錯誤的純手柄解決方案 –

0

對於車把,uou可以用反斜槓轉義雙括號,就像這樣:

<script id="firstTemplate" type="text/x-handlebars-template"> 
    <ul> 
    \{{#lines}} 
     <li>\{{name}}</li> 
    \{{/lines}} 
    </ul> 
</script>