在Nodejs的Router文件中公开vs创build对象

所以,我刚开始使用expressjs 4.0.0 ,遇到了express.Router()对象,这真的很不错。

问题是,现在我的所有路由都在另一个文件中,如何将一个对象暴露给路由文件?

serverjs文件:


var passport = require('passport');
var router = require('./app/ routes.js')(passport); //不pipe用
app.use('/',router);
app.listen(8080);

routes.js文件:


var express = require('express');
var router = express.Router(); // expressjs 4.0中的新function
//路线在这里
module.export = router;

那么,我应该如何访问路由器文件中的护照对象呢? 我应该创build一个新的对象还是有办法将server.js对象传递给router.js文件?

您可以将您的router.js包装在一个接受护照对象作为参数的函数中,并处理路由器的实例化。 然后,module.export函数而不是只有路由器。

编辑:包括例子

server.js:

 var passport = require('passport'); var router = require('./app/routes')(app, passport); app.use('/', router); app.listen(8080); 

routes.js:

 var express = require('express'); module.exports = function(app, passport){ var router = express.Router(); // routes go here // do stuff with passport return router; } 

这种方式工作

  var express = require('express') , home = require(_pathtoyourroutes.js) app.get('/', home.index); 

//router.js

 exports.index = function(req, res){ var d = new Date(); res.render('index', { title: 'Hello world', description:'Hello world this is a awesome site.', stylesheet: 'body.css', jsfile: 'home.js' }); };