2012-10-10 68 views
1

目前我使用slim框架爲瀏覽器提供html模板。視圖加載後,應用程序從RESTful API中檢索一些信息,並使用handlebars.js來填充DOM的各個方面。使用php和javascript模板

我想使用PHP模板系統,如mustache.php或樹枝來處理一些非常基本的模板需求,當html模板被提供。然而,當handlebars.js使用與mustache.php和twig相同的語法時,我需要用從API中檢索的信息來填充DOM。

我目前唯一的解決方案是在html模板上執行str_replace(),而不是使用上面的php模板解決方案之一。

有沒有辦法可以使用PHP模板解決方案之一和handlebars.js沒有衝突?

回答

2

處理這個問題的最快方法是更改​​服務器端模板中的鬍鬚分隔符。事情是這樣的:

{{=<% %>=}} 
<html> 
<head> 
    <title><% title %></title> 
    <script type="text/x-handlebars-template" id="mytemplate"> 
    {{# stuff }}{{ otherstuff }}{{/ stuff }} 
    </script> 
</head> 
<body> 
    <h1><% title %></h1> 
</body> 
</html> 

這樣的<%類型分隔符是由Mustache.php使用,而{{類型分隔符會被忽略,確保他們將圍繞由Handlebars.js使用。

您也可以立即改變定界符你把手模板,如果你想使用鬍鬚,以保持你的常規分隔符:

<html> 
<head> 
    <title>{{ title }}</title> 
    {{=<% %>=}} 
    <script type="text/template" id="mytemplate"> 
    {{# stuff }}{{ otherstuff }}{{/ stuff }} 
    </script> 
    <%={{ }}=%> 
</head> 
<body> 
    <h1>{{ title }}</h1> 
</body> 
</html> 

如果你移動你的車把模板到部分:

{{=<% %>=}} 
<script type="text/template" id="mytemplate"> 
    {{# stuff }}{{ otherstuff }}{{/ stuff }} 
</script> 

...分隔符更改僅適用於該部分內部。然後,你可以這樣做:

<html> 
<head> 
    <title>{{ title }}</title> 
    {{> handlebars_templates }} 
</head> 
<body> 
    <h1>{{ title }}</h1> 
</body> 
</html> 

我建議走這條路,因爲它是最易維護。