4

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 作为模板。

4

2 回答 2

13

您可以使用特殊的逃生标签来逃生{}在灰尘中逃生。它们是{~lb}{~rb}

例如

{~lb}hello{~rb}

将呈现为

{hello}
于 2012-06-29T03:25:18.323 回答
0

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

{~special} 特殊字符转换为特殊字符

一个特殊的是一个单开大括号 {,后跟一个波浪号 ~,后跟一个引用中的任何字符,然后是一个单闭大括号 }。Dust 支持五种“特价商品”:

{~s} 变为单个空格 {~n} 变为新行 {~r} 变为回车 {~lb} 变为左花括号 { {~rb} 变为右花括号 }

于 2020-10-01T18:45:19.523 回答