NodeJS 使用来自不同文件的模块
NodeJS using a module from different files
假设我想配置和使用 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'))
希望解释清楚。我还想知道 "preferred" 在多个位置使用模块的情况下的做法(mongoose
是另一个模块,不同的文件需要它来声明模型)。
提前致谢。
Passport 包导出 Passport 的一个实例 class,因此如果您这样做:
var passport = require('passport');
在您的路线中,您将使用相同的实例。
来自 Passport 库的源代码:
exports = module.exports = new Passport();
假设我想配置和使用 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'))
希望解释清楚。我还想知道 "preferred" 在多个位置使用模块的情况下的做法(mongoose
是另一个模块,不同的文件需要它来声明模型)。
提前致谢。
Passport 包导出 Passport 的一个实例 class,因此如果您这样做:
var passport = require('passport');
在您的路线中,您将使用相同的实例。
来自 Passport 库的源代码:
exports = module.exports = new Passport();