Они являются и промежуточными функциями, которые вызываются только для /some/path запросов, правда?
Ответ 1
Существует большая разница между использованием этих двух примеров. Функции, зарегистрированные в app.use, являются общими функциями промежуточного программного обеспечения и называются соответствующими их позиции в стеке промежуточного программного обеспечения, обычно внутри функции app.configure. Этот тип промежуточного программного обеспечения обычно размещается доapp.route, за исключением функций обработки ошибок.
С другой стороны, app.all - это функция маршрутизации (обычно не называемая промежуточным программным обеспечением), которая охватывает все HTTP-методы и называется только внутриapp.route. Если какая-либо из ваших предыдущих функций маршрутизатора соответствует /some/path и не вызывает обратный вызов next, app.all не будет выполняться, поэтому функции app.all обычно находятся в начале вашего блока маршрутизации.
Существует также третий тип промежуточного программного обеспечения, используемый в ваших функциях маршрутизации, например.
который типично используется для ограничения доступа или выполнения общих задач, связанных с маршрутом /some/path.
Для практического применения вы можете использовать обе функции, но будьте осторожны с различием в поведении при использовании app.use с /some/path. В отличие от app.get, app.use удаляет /some/path с маршрута перед вызовом анонимной функции.
Дополнительную информацию можно найти в документации express.