Что делает ".Strategy" в Узле или Паспорте? - PullRequest
0 голосов
/ 10 ноября 2018

Что здесь делает ".Strategy"? Это узел? Это паспорт?

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

Все, что касается «Стратегии», я понимаю. Я просто хочу знать, что делает «.Strategy». Я проверил документацию на passport-local модуль на npm . Я также проверил документацию Passport, и она просто используется в фрагментах кода. Объяснения не приводятся.

Я работаю со стеком MEAN, и мы используем Passport для аутентификации пользователей.

1 Ответ

0 голосов
/ 05 декабря 2018

Если вы посмотрите на источники 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 или например. этот ответ .

...