如何同时使用handlebar.js和Smarty?

如何同时使用handlebar.js和Smarty?,smarty,handlebars.js,Smarty,Handlebars.js,我正在使用Smarty进行服务器端模板制作,我想使用handlebar.js进行客户端模板制作,但Smarty couse出现了错误,因为handlebar使用了与Smarty相同的花括号。 我可以在Smarty的文字标记中编写车把模板,但这次我不能在车把模板中使用Smarty 例如: 我为cleanurl编写了一个smarty块函数。我不想为javascript编写cleanurl函数,所以我想同时使用Smarty和handlebar.js <div class="model-item"

我正在使用Smarty进行服务器端模板制作,我想使用handlebar.js进行客户端模板制作,但Smarty couse出现了错误,因为handlebar使用了与Smarty相同的花括号。 我可以在Smarty的文字标记中编写车把模板,但这次我不能在车把模板中使用Smarty

例如: 我为cleanurl编写了一个smarty块函数。我不想为javascript编写cleanurl函数,所以我想同时使用Smarty和handlebar.js

<div class="model-item" id="model-{{id}}">
    <a href="{$mainurl}{cu}?com=model&act=view&id={{id}}{/cu}"> {{name}} </a>
</div>


文档的这一部分讨论转义。我认为“{ldelim},{rdelim}”可能是您正在寻找的东西…尽管它会使代码的可读性降低一些…

您也可以使用文字标记…比转义每个大括号要好得多

{literal}
<script id="entry-template" type="text/x-handlebars-template">
  {{any_var}}
</script>
{/literal}
{literal}
{{any_var}}
{/literal}

我知道这是一个老问题,但现在这是一个受支持的smarty功能。 (我在寻找同样的问题时偶然发现了你的问题,所以我想回答它,以防其他人也有同样的问题)

如果您添加以下内容:

$smarty->setLiterals(数组({{{},}}},{{{},}}');

Smarty现在将忽略所有双联和三联的小胡子和把手。 注: 在启用之前,必须检查其现有smarty模板是否合法使用了{{或{{{{},并在设置后重新编写其代码,这些模板现在是文本,不再作为smarty语句使用


这是从3.1.32版开始的

我可以使用{ldelim}和{rdelim},但我必须将所有把手的括号写为{ldelim},{rdelim}。我认为这可能会导致混乱,我也认为这会延迟开发过程。我不能更改Smarty的delimeters,因为我在大多数地方都使用它。我没有在任何地方使用把手。我可以更改把手的delimeters。这是一个好主意吗?这是可能的?也许可以编写一个自定义函数来输出括号…(在Smarty中)我在mustache documentation上找到了。这正是我要找的。在HandBars的网站上“mustache模板与车把兼容,因此您可以使用一个mustache模板,将其导入车把,并开始利用额外的车把功能。”.车把中是否有此功能?文字标记很好,但当我同时使用smarty和mustache变量时,代码会非常复杂和混乱。我决定使用下划线微模板,我很高兴:)