【发布时间】:2014-11-04 03:16:58
【问题描述】:
https://github.com/jaredhanson/passport-local/blob/master/lib/index.js 中有如下构造:
/**
* Module dependencies.
*/
var Strategy = require('./strategy');
/**
* Expose `Strategy` directly from package.
*/
exports = module.exports = Strategy;
/**
* Export constructors.
*/
exports.Strategy = Strategy;
看起来 Strategy 被导出了两次 - 直接和通过属性 Strategy - 即 require('passport-local') 和 require('passport-local').Strategy 都指向相同的类型。这种结构的目的是什么?
【问题讨论】:
-
Ben,我知道 export 最初是一个指向 module.exports 的变量,如果我们改变 module.exports,我们也应该重新分配 export。但我的问题特别针对“exports.Strategy = Strategy;”这一行。这里分配给 Strategy 属性的不是新对象,而是 Startegy 类型本身,它已经被导出。
-
不是 100% 肯定,但这可能是由于遗留原因?
-
@leepowell,我也这么认为。我查看了 passport-http 模块。该模块公开了 BasicStrategy 和 DigestStrategy。请看我的回答。
标签: node.js module node-modules passport-local