在express.js中的每个请求上设置全局res.localvariables

基本上我想要build立一个站点宽的导航栏,其中包含在express.js中的本地variables中指定的链接

所以我build立了我想要包含在页面上的链接列表:

class NavigationLink constructor: (@title,@url) -> app.use (req,res,next) -> res.locals.navigationLinks = [ new NavigationLink "About", "/about" new NavigationLink "Projects", "/projects" new NavigationLink "Skills", "/skills" new NavigationLink "Contact", "/contact" ] next() 

那么如果我打到主页:

 app.get '/', (req,res) -> res.render('about') 

Jade试图呈现这个布局文件,该文件应该循环遍历navigationLinks数组并为每一个渲染:

 !!! 5 html include header body .container .row .span3 ul.nav.nav-tabs.nav-stacked for navigationLink in navigationLinks include navigationLink .span9 block content 

不过,我得到一个参考错误'导航链接没有定义',我假设意味着当地人没有得到通过。 会爱如何解决这个问题的build议,或者更适合这种事情的另一种devise模式(在网站的每个页面上dynamic构build链接)。 谢谢!

乔纳森翁是正确的。 你上面的代码应该在默认的中间件顺序中运行,它将在app.use中间件之前运行所有的app.router中间件。 因此,我会同意在你的代码中的其他地方,你可能有一行app.use app.router ,在你的代码片段中的app.use之前。