如何通过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
获取你之前设置的req
variables:
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);