目前,我正在使用超薄框架来为浏览器提供html模板。加载视图后,应用程序从RESTful应用程序接口检索一些信息,并使用handlebars.js填充DOM的各个方面。
我想使用php模板系统,如mustache.php或twig来处理一些非常基本的模板需求,当html模板被提供时。然而,作为handlebars.js使用与mustache.php和twig相同的语法,在使用从API检索到的信息填充DOM时,我遇到了一些主要的冲突。
我目前唯一的解决方案是在html模板上做一个str_replace(),而不是使用上面的php模板解决方案之一。
有没有一种方法可以让我在使用php模板解决方案和handlebars.js时不会发生冲突?
发布于 2012-10-11 07:27:52
处理此问题的最快方法是更改服务器端模板中的Mustache分隔符。如下所示:
{{=<% %>=}}
<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可以使用它们。
如果您想继续使用八字胡作为常规分隔符,还可以在Handlebar模板周围立即更改分隔符:
<html>
<head>
<title>{{ title }}</title>
{{=<% %>=}}
<script type="text/template" id="mytemplate">
{{# stuff }}{{ otherstuff }}{{/ stuff }}
</script>
<%={{ }}=%>
</head>
<body>
<h1>{{ title }}</h1>
</body>
</html>如果将handlebars模板移动到局部:
{{=<% %>=}}
<script type="text/template" id="mytemplate">
{{# stuff }}{{ otherstuff }}{{/ stuff }}
</script>..。分隔符更改仅在分隔符内部应用。然后你可以这样做:
<html>
<head>
<title>{{ title }}</title>
{{> handlebars_templates }}
</head>
<body>
<h1>{{ title }}</h1>
</body>
</html>我建议你走这条路,因为它是最容易维护的。
https://stackoverflow.com/questions/12826053
复制相似问题