dust.js 全局关闭 HTML 编码
dust.js turn off HTML encoding globally
有没有办法在 dust.js 中全局关闭 HTML 编码?我非常信任我的数据,想要在渲染期间将其关闭。不必在每个模板文件中的每个标签中添加“|s”,能够全局设置它是理想的。
如果没有,有没有办法使用自定义助手进行过滤?我创建了一个@val 助手,但无法应用“|s”过滤器。根据文档,以下内容应该有效:
{@val filters="|s" /}
但它不能单独工作,所以我认为需要在助手本身中放置一些逻辑。
您可以使用很少记录的 esc
pragma 将全局上下文应用于模板块。
{
"hello": "Hello & World"
}
{%esc:s}
This applies |s to everything inside the pragma
{hello} <-- will not escape the ampersand
{/esc}
关于你的第二个问题,这取决于你的助手在做什么。如果您的助手 returns 任何类型的块,例如通过 Chunk.render
,您必须手动应用过滤器。如果您的助手 returns 一个值,该值将通过任何存在的 filters
传递。这里有几个例子:假设你有一个助手 {@val}
只是 returns 任何传递给它的东西作为 value
.
从您的助手返回一个值意味着 filters
得到尊重:
dust.helpers.val = function(chunk, context, bodies, params) {
return params.value;
};
{@val value="Hello & World" /} <-- Hello & World
{@val value="Hello & World" filters="s" /} <-- Hello & World
从你的助手返回一个块忽略 filters
:
dust.helpers.val = function(chunk, context, bodies, params) {
return chunk.write(params.value);
};
{@val value="Hello & World" /} <-- Hello & World
有没有办法在 dust.js 中全局关闭 HTML 编码?我非常信任我的数据,想要在渲染期间将其关闭。不必在每个模板文件中的每个标签中添加“|s”,能够全局设置它是理想的。
如果没有,有没有办法使用自定义助手进行过滤?我创建了一个@val 助手,但无法应用“|s”过滤器。根据文档,以下内容应该有效:
{@val filters="|s" /}
但它不能单独工作,所以我认为需要在助手本身中放置一些逻辑。
您可以使用很少记录的 esc
pragma 将全局上下文应用于模板块。
{
"hello": "Hello & World"
}
{%esc:s}
This applies |s to everything inside the pragma
{hello} <-- will not escape the ampersand
{/esc}
关于你的第二个问题,这取决于你的助手在做什么。如果您的助手 returns 任何类型的块,例如通过 Chunk.render
,您必须手动应用过滤器。如果您的助手 returns 一个值,该值将通过任何存在的 filters
传递。这里有几个例子:假设你有一个助手 {@val}
只是 returns 任何传递给它的东西作为 value
.
从您的助手返回一个值意味着 filters
得到尊重:
dust.helpers.val = function(chunk, context, bodies, params) {
return params.value;
};
{@val value="Hello & World" /} <-- Hello & World
{@val value="Hello & World" filters="s" /} <-- Hello & World
从你的助手返回一个块忽略 filters
:
dust.helpers.val = function(chunk, context, bodies, params) {
return chunk.write(params.value);
};
{@val value="Hello & World" /} <-- Hello & World