我如何在全局变量的快速应用程序中使用nunjuck环境?

时间:2018-01-16 16:25:00

标签: node.js express nunjucks

我有点卡住,想知道是否有人可以帮助我。

我有一个明确的应用程序,我想将全局变量添加到nunjucks渲染引擎。

我在这里知道nunjucks addGlobal(http://mozilla.github.io/nunjucks/api.html#addglobal)方法文档,但不知道如何将环境绑定到我当前的配置块中。由于它似乎无法运作,我认为它与我的设置有关。

以下是我的配置设置:

const viewFolders = [
  path.join(__dirname, '..', 'views')
];

// *** view engine *** //
nunjucks.configure(viewFolders, {
  express: app,
  autoescape: true
});
var env = new nunjucks.Environment(new nunjucks.FileSystemLoader('views'));
console.log(env);
env.addGlobal('logged_in','FROM Module');
app.set('view engine', 'html');

正如您所看到的,我按照文档和模板进行了{{logged_in}},但它没有显示任何内容。现在我的其他渲染变量工作正常。但我想我需要以某种方式将我的env链接到我的nunjucks配置?

对此事的任何帮助将不胜感激。如果我取得更多进展,请务必更新你,但我现在已经尝试了一整天,所以如果有人能发现问题,我会非常感谢你。

提前感谢我获得的任何帮助。

2 个答案:

答案 0 :(得分:0)

使用res.locals

  

包含作用于请求的响应局部变量的对象,因此仅对在请求/响应周期(如果有)期间呈现的视图可用。

答案 1 :(得分:0)

所以使用配置块。您需要将其设置为变量,然后引用该变量以设置全局变量。

例如

var env;
env = nunjucks.configure(viewFolders, {
  express: app,
  autoescape: true
});
env.addGlobal('logged_in','FROM Module');