使用 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
(意思是,获取更多信息请点击链接)虽然它没有记录(或者可能不被建议),但这是可行的:
var njglobals = require('nunjucks/src/globals');
njglobals.someVar = 'someValue';
现在你可以在模板中使用someVar
。
但请确保不要覆盖njglobals
对象的任何现有属性(对于nunjucks@1.0.1
,它们是range
、cycler
和joiner
)。
app.locals
来存储全局变量。 - robertklep