Освоение функций промежуточного программного обеспечения в Express.js: подробное руководство по Router.use()

В мире веб-разработки Express.js зарекомендовал себя как популярная платформа для создания надежных и масштабируемых серверных приложений. Одной из ключевых особенностей, которая делает Express.js таким универсальным, является его функциональность промежуточного программного обеспечения. В этой статье мы углубимся в метод Router.use() и изучим его нюансы, варианты использования и лучшие практики. Так что хватайте свое программирующее оборудование и приступайте!

Понимание ошибки:

Чтобы начать наше путешествие, давайте сначала проанализируем предоставленное вами сообщение об ошибке: «throw new TypeError(‘Router.use() требует функции промежуточного программного обеспечения, но получил ‘ + gettype(fn))». Эта ошибка возникает при попытке использовать метод Router.use() с параметром, который не является допустимой функцией промежуточного программного обеспечения. Проще говоря, функция, которую вы передаете в Router.use(), не соответствует ожидаемой структуре промежуточного программного обеспечения.

Функции промежуточного программного обеспечения 101:

Прежде чем мы углубимся в различные методы использования Router.use(), давайте быстро вспомним, какие функции промежуточного программного обеспечения есть в Express.js. В Express функции промежуточного программного обеспечения — это функции, которые имеют доступ к объектам запроса и ответа (req и res), а также к следующей функции в цикле запроса-ответа приложения. Они могут выполнять такие задачи, как изменение объекта запроса, выполнение аутентификации, обработка ошибок или просто передача управления следующей функции промежуточного программного обеспечения.

Метод 1: базовое использование

Самый распространенный способ использования Router.use() — предоставление функции промежуточного программного обеспечения в качестве аргумента. Вот простой пример:

const express = require('express');
const app = express();
const router = express.Router();
router.use((req, res, next) => {
  // Perform middleware tasks here
  console.log('Middleware function executed');
  next();
});
app.use('/api', router);

В этом примере мы создаем экземпляр приложения Express, определяем маршрутизатор и присоединяем к нему функцию промежуточного программного обеспечения с помощью Router.use(). Функция промежуточного программного обеспечения регистрирует сообщение, а затем вызывает функцию next(), чтобы передать управление следующему промежуточному программному обеспечению в цепочке.

Метод 2: несколько функций промежуточного программного обеспечения

Вы также можете передать в Router.use() несколько функций промежуточного программного обеспечения в качестве отдельных аргументов. Express.js выполнит их в том порядке, в котором они определены. Вот пример:

router.use((req, res, next) => {
  // First middleware function
  console.log('First middleware function executed');
  next();
}, (req, res, next) => {
  // Second middleware function
  console.log('Second middleware function executed');
  next();
});

В этом случае сначала выполняется первая функция промежуточного программного обеспечения, а затем вторая функция промежуточного программного обеспечения.

Метод 3: одновременная установка нескольких промежуточных программ

Если у вас есть группа маршрутов, которым требуется один и тот же набор функций промежуточного программного обеспечения, вы можете смонтировать их все одновременно с помощью Router.use(). Вот пример:

const logger = (req, res, next) => {
  console.log('Logging middleware');
  next();
};
router.use('/admin', logger, (req, res, next) => {
  // Route-specific middleware
  console.log('Admin route middleware');
  next();
});

В этом примере промежуточное программное обеспечение регистратора применяется ко всем маршрутам, начинающимся с «/admin», тогда как последующая функция промежуточного программного обеспечения применяется только к маршруту «/admin».

В этой статье мы рассмотрели различные методы использования Router.use() в Express.js для использования возможностей функций промежуточного программного обеспечения. Мы начали с понимания предоставленного вами сообщения об ошибке, затем обсудили основы функций промежуточного программного обеспечения и, наконец, изучили различные способы использования Router.use() с примерами кода.

Освоение функций промежуточного программного обеспечения имеет решающее значение для создания эффективных и масштабируемых приложений Express.js. Эффективно используя Router.use() и его варианты, вы можете улучшить функциональность, безопасность и производительность вашего приложения.

Так что вперед, экспериментируйте с функциями промежуточного программного обеспечения и поднимите свои навыки разработки Express.js на новый уровень!