如何在nunjucks中定义全局变量?

mpe*_*pen 7 node.js nunjucks

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

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

Ali*_*iuk 7

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

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

{% set some_var1 = "Foo" %}
{% set some_var2 = "Bar" %}
Run Code Online (Sandbox Code Playgroud)

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

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

<span>{{globals.some_var1 }}</span>
<span>{{globals.some_var2 }}</span>
Run Code Online (Sandbox Code Playgroud)

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


Joe*_*Joe 6

我就是为了找这个才来到这里的。看起来现在有一个推荐的方法,最近在版本 1.0.6中添加了。

请参阅Environment.addGlobal


rob*_*lep 5

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

var njglobals = require('nunjucks/src/globals');
njglobals.someVar = 'someValue';
Run Code Online (Sandbox Code Playgroud)

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

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