暴露在Nodejs的路由器文件中创建对象 [英] Expose vs Creating object in Router file of Nodejs
问题描述
所以,我刚开始使用 expressjs 4.0.0
,并碰到 express.Router()
这是非常好的。
So, I just started with expressjs 4.0.0
and came across the express.Router()
object, which is really nice.
问题是,现在我所有的路线都在另一个文件中,如何将对象公开到路由文件?
Problem is, now that all my routes are in another file, how do I expose an object to the routes file ?
serverjs文件:
serverjs file:
...
var passport = require('passport');
var router = require('./ app / routes.js')(护照); //不会工作
app.use('/',路由器);
app.listen(8080);
...
var passport = require('passport');
var router = require('./app/routes.js')(passport); //WILL NOT WORK
app.use('/', router);
app.listen(8080);
routes.js文件:
routes.js file:
...
var express = require('express');
var router = express.Router(); // expressjs 4.0中的新功能
//路由到这里
module.export = router;
...
var express = require('express');
var router = express.Router(); //new feature in expressjs 4.0
//routes go here
module.export = router;
那么我应该如何在路由器文件中访问护照对象?我应该创建一个新对象还是有一种方法将server.js对象传递给router.js文件?
So, how should I access passport object in router file ? Should I create a new object or is there a way to pass the server.js object to router.js file ?
推荐答案
你可以将您的router.js包装在接受护照对象作为参数的函数中,并处理路由器的实例化。然后,module.export功能而不是路由器。
You could wrap your router.js in a function that accepts the passport object as parameter and handles the instantiation of the router also. Then, module.export that function instead of only the router.
编辑:包括示例
server.js :
server.js:
var passport = require('passport');
var router = require('./app/routes')(app, passport);
app.use('/', router);
app.listen(8080);
routes.js:
routes.js:
var express = require('express');
module.exports = function(app, passport){
var router = express.Router();
// routes go here
// do stuff with passport
return router;
}
这篇关于暴露在Nodejs的路由器文件中创建对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!