所以,我刚开始使用expressjs 4.0.0
并遇到了express.Router()
对象,这非常好。
问题是,现在我的所有路由都在另一个文件中,如何将对象暴露给路径文件?
serverjs文件:
...
var var passport = require('passport');
var router = require('。/ app / routes.js')(护照); //将无法工作
app.use('/',router);
app.listen(8080);
routes.js文件:
...
var var express = require('express');
var router = express.Router(); // expressjs 4.0中的新功能 //路线到这里
module.export = router;
那么,我应该如何访问路由器文件中的护照对象?我应该创建一个新对象还是有办法将server.js对象传递给router.js文件?
答案 0 :(得分:4)
您可以将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;
}
答案 1 :(得分:0)
这种方式有效
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' });
};