9

使用nunjucks,我如何定义一些应该在所有模板中始终可用的全局变量?

理想情况下,它们将在环境或配置选项中的某处指定,而不必在每次调用时合并到上下文字典中nunjucksEnvironment.render

4

3 回答 3

7

它可能对某人也有帮助。在处理nunjucks中的全局变量时,可以避免编写任何 js 代码。

您需要创建一个_globals.html文件,其中包含所有全局变量。

{% set some_var1 = "Foo" %}
{% set some_var2 = "Bar" %}

然后将_globals.html包含到需要全局变量的任何页面中。例如somePage.html

{% import '_globals.html' as globals %}

<span>{{globals.some_var1 }}</span>
<span>{{globals.some_var2 }}</span>

有关更多信息,请查看http://mozilla.github.io/nunjucks/templating.html#set

于 2017-12-19T15:34:00.713 回答
4

我只是在寻找这个并来到这里。看起来现在有一种推荐的方式,最近在1.0.6 版本中添加了。

请参阅Environment.addGlobal

于 2014-09-04T20:50:53.480 回答
4

它没有记录(或可能建议),但这有效:

var njglobals = require('nunjucks/src/globals');
njglobals.someVar = 'someValue';

您现在可以someVar在模板中使用。

但请确保不要覆盖njglobals对象的任何现有属性(对于nunjucks@1.0.1、它们是rangecyclerjoiner

于 2013-12-29T19:34:35.107 回答