Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Marko JS模板和Express中的全局变量_Node.js_Marko - Fatal编程技术网

Node.js Marko JS模板和Express中的全局变量

Node.js Marko JS模板和Express中的全局变量,node.js,marko,Node.js,Marko,一旦我在Express中使用 app.use(function(req, res, next){ res.locals.isAuthenticated = true; next(); }); 如何从任何视图(*.marko模板)中获取该变量 我知道在Jade中,您应该能够像其他变量一样直接访问它,而无需将它从子模板传递到父模板。Marko JS中的等价物是什么 感谢使用Marko,您通常希望将模板直接渲染到可写的res流: var template = require('./templ

一旦我在Express中使用

app.use(function(req, res, next){
  res.locals.isAuthenticated = true;
  next();
});
如何从任何视图(*.marko模板)中获取该变量

我知道在Jade中,您应该能够像其他变量一样直接访问它,而无需将它从子模板传递到父模板。Marko JS中的等价物是什么


感谢使用Marko,您通常希望将模板直接渲染到可写的
res
流:

var template = require('./template.marko');

app.use(function(req, res){
  var templateData = { ... };
  template.render(templateData, res);
});
通过这种方法,您可以完全控制传递给模板的数据。从技术上讲,通过执行以下操作,您可以访问模板中的
res.locals

<div if="out.stream.locals.isAuthenticated">
res.locals

var template = require('./template.marko');

app.use(function(req, res){
  var templateData = res.locals;
  template.render(templateData, res);
});
var template = require('./template.marko');

app.use(function(req, res){
  var templateData = {
    isAuthenticated: res.locals.isAuthenticated
  };
  template.render(templateData, res);
});
Marko还支持使用
out.global
访问的“全局”数据。见:


如果你还有问题,请分享

谢谢@Patrick Steele Idem,除了我在帖子上写的代码之外,我唯一要做的就是像你说的那样用
if=“out.stream.locals.isAuthenticated”
检查变量。没别的了!这样,我就不必像您建议的其他示例那样将变量直接传递给模板。那应用程序本地人呢?我怎样才能达到这些?嘿@crash,
app
实例挂起了
res
req
分别作为
res.app
req.app
,这样你就可以访问
app.locals
作为
out.stream.app.locals
。对于像我这样到达这里并发现一个死链接的人来说:我们可以访问req、res、app、app、,使用res.marko而不是template.render with express,在任何视图中通过out.global自动生成app.locals和res.locals。看见