Есть ли разница между этими двумя методами использования промежуточного программного обеспечения express? - PullRequest
2 голосов
/ 09 января 2020

Я сталкивался с двумя различными способами определения express, использования промежуточного программного обеспечения (), и мне интересно, есть ли между ними какая-либо разница или это просто синтаксический сахар?

A

const app = express();
app.use(cors());
app.use(responseTime());
app.use(someFunction);
app.use(anotherHandler);
app.use(failureHandler);

B

const app = express();
app.use(cors())
  .use(responseTime())
  .use(someFunction)
  .use(anotherHandler)
  .use(failureHandler);

Ответы [ 3 ]

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

Это называется метод сцепление :

Объединение методов - это метод упрощения кода в сценарии ios, который включает выполнение нескольких операций над одним и тем же объект.

Просмотр источника Express. js и application:

app.use = function use(fn) {
  ...
  return this:
}

Как видите, use возвращает this, следовательно, возможна цепочка.

1 голос
/ 09 января 2020

Это не два способа его использования. Они такие же. Позвонив по номеру app.use().

И это тоже не синтактический c сахар. app.use() возвращает this, следовательно, возвращаемое им значение (то же самое значение, которое хранится в app) может использоваться для связывания другого вызова .use() и т. Д.
Результат тот же; это вопрос вкуса, какой путь вы предпочитаете (вы должны использовать тот, который, по вашему мнению, легче читать и понимать).

1 голос
/ 09 января 2020

Реальной разницы нет, только на 3 символа короче каждый раз, когда вы хотите написать «app.use». Это похоже на определение .e js и именования файлов «home» вместо «home.e js». Разница в том, что вы заканчиваете sh строку каждый раз, используя ;

app.use(cors()); с ; - конец строки.

Например, если вы использовали приведенный ниже код, .use(failureHandler); не будет работать, потому что ; заканчивается первым app.use

const app = express();
app.use(cors())
  .use(responseTime())
  .use(someFunction)
  .use(anotherHandler); <------- STOPS HERE
  .use(failureHandler)

Они оба будут работать нормально, но по моему опыту было бы более заметно пропустить 1

";" вместо каждого ";" в каждой строке.

Я бы сказал, что это просто сахарный синтаксис, как вы упомянули.

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