使用nunjucks,我如何定义一些应该在所有模板中始终可用的全局变量?
理想情况下,它们将在环境或配置选项中的某处指定,而不必在每次调用时合并到上下文字典中nunjucksEnvironment.render
。
它可能对某人也有帮助。在处理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
我只是在寻找这个并来到这里。看起来现在有一种推荐的方式,最近在1.0.6 版本中添加了。
它没有记录(或可能建议),但这有效:
var njglobals = require('nunjucks/src/globals');
njglobals.someVar = 'someValue';
您现在可以someVar
在模板中使用。
但请确保不要覆盖njglobals
对象的任何现有属性(对于nunjucks@1.0.1
、它们是range
和cycler
)joiner
。