使用Express 4将数组传递给Nodejs中的app.js中的routes / index.js

我如何传递一个对象的数组到路由中间件,以便我可以渲染视图取决于传递的variables。

目前,这是我正在使用的布局

app.js

var index = require('./routes/index'); ARRAY = [objects]; app.use('/', index); 

路线/ index.js

 var express = require('express'); var router = express.Router(); router.get('/', function(req, res, next){ res.render('index', {data: ARRAY}); }); module.exports = router; 

index.jade

 extends layout block content each d in data div!= d.method() 

目前唯一可以实现的解决scheme是使用全局variables,但这不是可持续的或可扩展的。 我试过app.set('shrinkr',shrinkr);app.locals,但不能得到这两个与我的应用程序的布局。 从我对Express4框架的理解,我应该可以在app.js中做这样的事情:

 var index = require('./routes/index')(array); 

但我不能得到正确的执行,并没有关于这个在networking上的信息。

有多种方法可以解决这个问题,但是如果您想将数组“烘烤”到中间件中(如您的代码示例所示),可以这样做:

 var express = require('express'); module.exports = function(array) { var router = express.Router(); return router.get('/', function(req, res, next){ res.render('index', {data: array}); }); } 

那么你可以按照你的build议使用它:

 var index = require('./routes/index')(array); 

由于每次调用导出的函数时都会创build新的中间件,因此可以将独立arrays烘焙到不同的中间件中:

 var index1 = require('./routes/index')(["array 1"]); var index2 = require('./routes/index')(["array 2"]); 

根据您的需要,对您而言可能有用或不可用。