Сегодня я хотел бы рассказать о выпуске перьев / хуков, которые предоставляют асинхронное промежуточное ПО для любого класса или функции JavaScript или TypeScript. Он позволяет создавать составляемые, повторно используемые и тестируемые рабочие процессы для проверки, разрешений, кэширования, ведения журнала, профилирования и многого другого без изменения существующего кода функции.

@feathersjs/hooks не имеет внешних зависимостей и может использоваться во многих средах, например

Почему промежуточное ПО?

Идея промежуточного программного обеспечения заключается в создании небольших обработчиков, каждый из которых выполняет определенную задачу и передает результат следующему шагу в цепочке. Эта концепция давно существует во многих различных формах, таких как конвейеры Unix, аспектно-ориентированное программирование или переход продолжения в функциональном программировании. Есть даже предложенный новый оператор конвейера для самого JavaScript.

В NodeJS это стало особенно популярным в низкоуровневых веб-фреймворках, таких как Express, Koa, Socket.io и других, для обработки запросов и ответов. Каждый уровень обработчиков HTTP выполняет определенную задачу (например, анализ тела JSON) и решает, когда передать обработку следующему шагу. Однако на самом деле нет причин ограничивать этот шаблон только веб-запросами или ответами. FeathersJS использует не зависящее от транспорта промежуточное ПО (называемое перехватчиками, не путать с более поздними перехватчиками React) для реализации рабочих процессов (таких как отправка электронного письма при создании нового пользователя) для любого из своих протокольно-независимых методов обслуживания. За последние 6 лет это оказалось мощным способом создания API-сервисов.

Промежуточное ПО с @feathersjs/hooks

@feathersjs/hooks расширяет этот шаблон промежуточного программного обеспечения, чтобы его можно было использовать с любой асинхронной функцией. Он основан на механизме промежуточного программного обеспечения KoaJS, который дает функции промежуточного программного обеспечения контроль над всем потоком - до, после и в случае ошибок - путем вызова асинхронной функции next.

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

Версия JavaScript выглядит так:

С помощью TypeScript хуки также могут быть зарегистрированы через декораторы:

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

Присоединяйтесь к пути перьев

Этот вид выразительного промежуточного программного обеспечения является одним из шаблонов проектирования высокого уровня, используемых Feathers для создания надежных и гибких веб-API и приложений реального времени.

Цепочки промежуточного программного обеспечения в таких фреймворках, как Express или Koa, могут стать длинными и сложными для отслеживания и тестирования, поскольку в конечном итоге легко смешать логику приложения с обработкой HTTP-запросов и ответов. Преимущество использования промежуточного программного обеспечения с любой функцией вместо простых веб-запросов заключается в том, что оно позволяет лучше организовать ваше приложение в виде более автономных и тестируемых функциональных единиц и повторно использовать их в других местах.

Хотя Feathers не требуется для использования этого шаблона проектирования разработки программного обеспечения, мы считаем, что наша транспортно-независимая версия является еще одним улучшением этого замечательного шаблона компоновки. 🐦

Свяжитесь с нами в Twitter или в нашей группе Slack.

Если вы новичок в Feathers и хотите создать свое первое приложение, зайдите в документацию и получите своего компьютерного фаната!