NodeJS使用来自不同文件的模块

时间:2015-03-12 14:41:09

标签: node.js module require

让我们说我想配置和使用passport模块。

在我的app.js中,我的模块配置最少,如下所示:

passport = require('passport'); // load module
app.use(passport.initialize()); // initialize passport
app.use(passport.session());    // use session

现在,我想为我的应用配置路由。但是,我将其放在一个单独的文件中,即./lib/router.js。问题是我是否应该将配置的passport变量传递给该文件,或者require再次传递该文件中的护照模块。

举例说明:

// **app.js**
router = express.Router() // declare router
// option (A) Do I have to pass the passport variable to be using that same variable I have already defined in app.js?
app.use(require('./lib/router')(router, passport))

// **lib/router.js**
// option (B) or, can I just 'require' another passport module and affect the same module said in app.js?
passport = require('passport')
module.exports = (router) ->
    router.get('/authenticate', passport.authenticate('local'))

我希望解释清楚。我也想知道"首选"在多个位置使用模块的情况下练习(mongoose是另一个模块,其中不同的文件需要它来声明模型)。

提前致谢。

1 个答案:

答案 0 :(得分:1)

Passport包导出Passport类的实例,所以如果你这样做:

var passport = require('passport');

在您的路线中,您将使用相同的实例。

从Passport库的源代码:

exports = module.exports = new Passport();