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

时间:2014-04-18 18:17:57

标签: javascript node.js express mean-stack

所以,我刚开始使用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文件?

2 个答案:

答案 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' });
};