在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;
看起来战略出口两次 - 直接和通过财产战略 - 即要求('护照 - 本地')和要求('护照 - 本地')。策略都指向到同一类型。这种结构的目的是什么?
答案 0 :(得分:0)
它创建一个循环引用,它返回主对象。它不使用额外的内存或导致内存泄漏。它是同一个对象,只是对top的引用。它在node.js中非常常用(只是日志流对象)。显然,图书馆没有使用它。
答案 1 :(得分:0)
进一步观察,看起来这样做是为了在各种策略中保持一致。模块可以导出多个策略。因此,模块将为每个策略分别拥有一个属性。但是,在这种情况下,该模块包含单个策略。因此,它似乎已作为模块和模块中的属性公开,因此module.Strategy将返回策略。