В чем разница между этими двумя типами требований в Javascript? - PullRequest
4 голосов
/ 29 января 2020

В учебном пособии я видел код, подобный этому:

var session = require('express-session');
var FileStore = require('session-file-store')(session);

И еще один код, подобный этому:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

Но я думаю, что могу написать первый код следующим образом:

var sessionFileStore = require('session-file-store');
var FileStore = sessionFileStore.session;

И второй, например:

var Schema = require('mongoose')(Schema);

ИЛИ

var Schema = require('mongoose').Schema;

Я просто хотел спросить наверняка, равны ли эти два вида письма или нет? есть какие-то различия?

Мне также хотелось бы знать, в чем смысл / разница, если я использую что-то вроде ниже для второй команды:

var Schema = require('mongoose')('Schema');

1 Ответ

4 голосов
/ 29 января 2020

То же самое. require - это нормальная функция, которая возвращает значение. Таким образом, если это значение также является функцией, вы можете немедленно вызвать ее или использовать одно из ее свойств, если это объект.

Однако во втором случае require('mongoose')(Schema) вызовет две ошибки:

  1. Здесь require возвращает объект, а не функцию, поэтому вы не можете вызвать его.
  2. Вы используете переменную Schema, которая еще не была определена, и передавая его в качестве аргумента функции.

Во втором случае правильный способ поместить его в одну строку: var Schema = require('mongoose').Schema;

И в первом случае я думаю, что правильный путь - var FileStore = sessionFileStore(session); Я предполагаю, что session является глобальной переменной или был определен ранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...