将 Swig 模板引擎应用于变量的内容

Apply Swig template engine to contents of variable

本文关键字:变量 应用于 引擎 Swig      更新时间:2023-09-26

我正在寻找一个将 Swig 模板引擎应用于变量内容的过滤器。

假设我有以下代码:

var swig = require("swig");
var str = "{{ hello }}";
var hello = "Hello world";
var contents = "{{ str }} {% raw %}{{ str }}{% endraw %}";
contents = swig.render(contents, { locals: { str: str, hello: hello }});
console.log(contents);

这将打印以下内容

{{ hello }} {{ str }}

但我希望它打印以下内容

Hello world {{ str }}

基本上,我正在寻找一个过滤器,它将 Swig 引擎再次应用于 str 变量的内容,如下所示:

{{ str | render }} {% raw %}{{ str }}{% endraw %}

这在 Swig 中可能吗?

知道了。这是过滤器:

swig.setFilter('render', function (input, l) {
  return swig.render(input, { locals: l });
});

在模板中使用它,如下所示:

"{{ str | render(_ctx) }} {% raw %}{{ str }}{% endraw %}"