“ .Strategy”在Node或Passport中做什么?

时间:2018-11-10 18:06:09

标签: node.js passport.js mean-stack

“。Strategy”在这里做什么?是Node吗?是护照吗?

var LocalStrategy = require('passport-local').Strategy;

我了解“。策略”部分的所有内容。我只想知道“。策略”的作用。我已经查看了passport-local module on npm上的文档。我还检查了Passport的文档,它仅用于代码段中。没有提供解释。

我正在使用MEAN堆栈,我们正在使用Passport对用户进行身份验证。

1 个答案:

答案 0 :(得分:0)

如果您查看passport-local index.js的来源,您会发现它直接和在exports.Strategy中导出相同的内容。

在执行require('passport-local).Strategy时,将导入exports.Strategy中定义的导出,但是在这种情况下,实际上只是require('passport-local')相同,因为直接从模块中导出了相同的构造函数。

如果您定义这样的模块:

var Thing = { foo: () => 'bar' };

exports = module.exports = Thing;

exports.Thing = Thing;

您可以通过多种方式使用它:

const Thing = require('./module');
console.log(Thing.foo());

有效,

const Thing = require('./module').Thing;
console.log(Thing.foo());

使用这两种导入,您实际上也可以呼叫

console.log(Thing.Thing.foo());

如果您删除了模块的exports.Thing = Thing;部分,则

const Thing = require('./module').Thing;

不再工作。

出口经常引起混乱。您可以看一下Node docs或例如。 this answer