【问题标题】:Nunjucks/Jinja - alternative for `include` when access to scope is neededNunjucks/Jinja - 当需要访问作用域时替代`include`
【发布时间】:2017-10-27 06:04:56
【问题描述】:

据 Nunjucks documentation

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

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


实际的例子是:两个部分有相同的变量是set。我们决定干掉它,将那些set 语句放入部分语句中,并通过include 请求它。使用 include 时,这些变量超出范围。

partial-config.nunjucks:

{% set var = 'x' %}

partial1.nunjucks:

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

partial2.nunjucks:

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

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

【问题讨论】:

    标签: templates jinja2 templating nunjucks client-side-templating


    【解决方案1】:

    也许这是不可能的,因为先渲染主模板,然后再渲染include。也许我错了。

    在任何情况下,您都可以使用custom loader,“定义”您自己的标签,例如config 的用法类似于 {% config "filename.njk" %}。加载器必须找到config-tag 并将这一行替换为filename.njk 并将模板传递给下一个渲染。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 2016-10-12
      • 2023-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多