Escape Dust.js标签

时间:2012-06-28 19:09:43

标签: javascript templates node.js dust.js

TLDR;跳到主要问题的底部段落。

我会试着通过忽略为什么我想要这样做以及围绕它的上下文来保持这个简洁明了。但至少,我在后端运行Node.js,使用Dust.js渲染每个视图。

然后我还有一个Dust的客户端副本,它根据需要动态呈现界面元素。当它投入生产时,我将预编译所有客户端Dust模板,并完全避免这个问题。但是,在开发过程中,如果我可以将模板保存在DOM元素中,测试会更简单。但是,这些“子模板”会被破坏,因为用于客户端模板的标记会被填充为空值(因为我无法将它们提供给服务器端渲染器)。

说我有这个模板:

<!DOCTYPE html>
<html>
<head>
    <title>{title}</title>
</head>
<body>
    <div id="some_template_to_be_rendered_client_side">
        <p>{description}</p>
    </div>
</body>
</html>

我希望在渲染模板时由Node.js Dust填充{title}模板标签,但我正在寻找一种方法来转义 {description}标记,以便我可以使用div中的HTML作为模板在客户端动态编译和呈现模板。

2 个答案:

答案 0 :(得分:11)

您可以使用特殊的转义标记来转义原始{}的灰尘。它们是{~lb}{~rb}

E.g。

{~lb}hello{~rb}

将呈现为

{hello}

答案 1 :(得分:0)

您只能替换五个特殊字符[docs:https://www.dustjs.com/docs/syntax/]

{〜特殊} 特殊字符转换为特殊字符

特殊之处在于,单个大括号{,后跟波浪号〜,后跟引用中的任何字符,然后是单个大括号}。灰尘支持五个“特殊”功能:

{〜s}变成一个空格 {〜n}换行 {〜r}变成回车符 {〜lb}成为左花括号{ {〜rb}变成右花括号}