0

根据 Nunjucks文档

包含不是在渲染之前将包含的模板代码拉入包含模板的预处理器;相反,它会触发包含模板的单独渲染,并且包含该渲染的结果。

如果你真的想要一个“在渲染之前将包含的模板代码拉入包含模板的预处理器”,那在 Nunjucks/Jinja 中会是什么?


实际示例是:两个部分具有相同的变量set。我们决定将其干燥,将这些set语句放入部分中并通过include. 使用include这些变量时超出范围。

部分配置.nunjucks:

{% set var = 'x' %}

部分1.nunjucks:

{% include "partial-config.nunjucks" %}
var={{ var }}

partial2.nunjucks:

{% include "partial-config.nunjucks" %}
var={{ var }}

挑战:上面部分中的变量var是空白的。我希望在渲染之前将它设置在每个部分的范围内,就好像它只是字符串片段一样,没有额外的范围等。

4

1 回答 1

2

也许这是不可能的,因为首先渲染主模板并include在它之后。也许我错了。

在任何情况下,您都可以使用自定义加载器,“定义”您自己的标签,例如config使用{% config "filename.njk" %}. 加载器必须找到config-tag 并替换此行filename.njk并传递模板以进行下一步渲染。

于 2017-05-31T01:57:35.547 回答