如何通过Express中的路由传递variables

app.js

var express = require('express'); var app = express(); var testVar = "Hello World"; var index = require('./routes/index'); app.use('/', index); 

index.js

 var express = require('express'); var router = express.Router(); router.get('/', function(req, res) { console.log(testVar); }); module.exports(router); 

如何在./routes/index.js中传递variables“testVar”? 有人有一个想法? 提前致谢!

你可以在这样的中间件中做到这一点:

 var express = require('express'); var app = express(); var testVar = "Hello World"; var myMiddleWare = function (req, res, next) { req.testVar = testVar; next(); } var index = require('./routes/index'); app.use('/', myMiddleWare, index); 

索引的每个请求都会调用中间件。

与正常路由函数唯一的区别是第三个参数“next”,它可能被调用到下一个步骤(索引),或者不被调用(在发生错误或其他事件的情况下)

您可以在这里阅读有关中间件的更多信息: http : //expressjs.com/en/guide/using-middleware.html

你可以在app.js做到这一点:

 app.use(function (req, res, next) { req.testVar = testVar; next(); }); 

然后在index.js获取你之前设置的reqvariables:

 router.get('/', function(req, res) { console.log(req.testVar); }); 

你可以传递一个像下面这样的variables


    app.get('/ user /:testVar',函数(req,res,next){
     });

然后检索参数

  req.params.testVar 

我不知道你这样做的目的。 但是,这是如何可以发送数据到./routes/index.js没有中间件,也得到路由器。

index.js

 var express = require('express'); var router = express.Router(); var testVar = null; router.get('/', function(req, res) { console.log(testVar); }); module.exports = function(testData){ testVar = testData; return router; } 

app.js

 var testVar = "Hello World"; var index = require('./routes/index')(testVar);