Содержание[Скрывать][Показывать]
В 2021 году JavaScript был наиболее широко используемым языком программирования.
Привлекательность этой технологии неоспорима, о чем свидетельствует огромное количество фреймворков, поддерживающих программирование на JavaScript.
Есть Angular, React и Vue на интерфейсе, а также Express и Next на сервере, и это лишь некоторые из них.
С таким количеством замечательных фреймворков для внутреннего программирования на JavaScript вы можете подумать, почему я должен искать что-то другое, а не просто использовать Express или Next.
Возможно, вам нужно быстро запустить процесс разработки с приличным шаблоном, и ручное добавление не только новых контроллеров, но и сервисов делает вас больным.
Или вы хотите создать большое масштабируемое программное обеспечение, которым легко управлять. Или, возможно, вы просто хотите работать более эффективно и удобно.
Независимо от того, что верно в ваших обстоятельствах, Nest.js может стать идеальным решением для ваших нужд.
Этот пост предоставит информацию о NestJS, а также практический опыт.
Что такое NestJS?
NestJS это прогрессивная платформа Node с открытым исходным кодом, расширяемая и адаптируемая .js Фреймворк для создания, привлечения и проверки серверных систем. Сейчас это узел с самыми быстрыми темпами роста.
Фреймворк TypeScript для js. NestJS используется для создания масштабируемых, тестируемых и слабо связанных приложений.
Это добавляет масштабируемость Node. Js-серверы вышли на совершенно новый уровень. PostgreSQL, MongoDB и MySQL входят в число поддерживаемых баз данных.
NestJS расширяем, потому что его можно использовать с другими библиотеками; гибкий из-за своей адаптируемой полноценной экосистемы. И прогрессивный, поскольку он поддерживает функции и принципы дизайна JavaScript.
В первую очередь на него повлияли Angular, React и Vue, и он поставляется со встроенным внедрением зависимостей.
Особенности
- Он прост в использовании, изучении и освоении.
- Это бесплатно и открытые источники (Лицензия MIT)
- Мощный интерфейс командной строки (CLI) для повышения производительности и простоты разработки
- Программы модульного тестирования, которые просты в использовании
- Используется TypeScript, строго типизированный язык, являющийся надмножеством JavaScript.
- Разработка и поддержка активной кодовой базы.
- Поддержка сотен специализированных модулей, которые упрощают взаимодействие с популярными технологиями и идеями, такими как TypeORM, Mongoose, GraphQL, ведение журнала, проверка, кэширование, WebSockets и т. д.
Каковы строительные блоки NestJS?
Строительные компоненты приложений Nest перечислены ниже; есть и другие, но эти три являются наиболее значительными. Давайте посмотрим на них быстро.
1. Контроллеры
Контроллеры отвечают за обработку входящих запросов и ответы клиентам. Он получает определенные HTTP-запросы, и система маршрутизации определяет, какой контроллер получает какой запрос.
Затем он готовит подходящий ответ для отправки. С помощью классов и декораторов строится простой сборщик и каждый контроллер имеет свой набор маршрутов для выполнения различных задач.
2. Провайдеры
Провайдеры — ключевая идея Nest. Многие из основных классов Nest — сервисы, репозитории, фабрики, помощники и т. д. — могут обрабатываться как поставщики.
Основное понятие поставщика состоит в том, что он может быть внедрен как зависимость; это означает, что объекты могут образовывать различные ассоциации друг с другом, а роль «подключения» экземпляров объектов может быть в основном передана системе выполнения Nest.
3. Модули
Модуль — это класс с декоратором @Module(), который организует компоненты структуры приложения. Каждое приложение имеет корневой модуль, который используется для построения графа приложения, который дополнительно разрешает зависимости и взаимодействия между поставщиком и модулем.
Этот декоратор передает метаданные в Nest.js, чтобы определить, какие компоненты, контроллеры или другие ресурсы будут использоваться в коде приложения, и объединить их в единый набор.
Каждый модуль имеет набор возможностей, которые каким-то образом связаны между собой.
Начало работы с NestJS
1. Установка
Давайте установим NestJS и создадим с ним проект, выполнив следующие действия:
В результате будет создана следующая структура каталогов:
2. Контроллеры
Строительные блоки Nest — это контроллеры. Это места, где будут обрабатываться входящие запросы. Вы можете указать путь маршрута с помощью модификаторов методов HTTP (Get, Post, Put, Delete и т. д.), декораторов, как показано в приведенном ниже коде.
Nestjs использует подход декоратора и в основном разработан на Typescript, хотя он также поддерживает JavaScript. Вы также можете использовать валидатор класса для проверки тела запроса.
Я просто собираюсь создать экземпляр сервера Nestjs и глобально добавить ValidationPipe. Pipes — это просто методы, которые выполняются перед контроллерами. Трубы также можно применять на уровне метода/аргумента с помощью декоратора @UsePipes.
3. Провайдеры
Провайдеры — еще один важный компонент Nestjs. До сих пор я хранил данные во временной переменной. Вот почему такую простую задачу можно решить с помощью обработчиков контроллеров.
Однако для более крупной и сложной логики разделение и повторное использование кода будет затруднено. Именно тогда в дело вступают поставщики. Вы можете объявить/создать поставщика поверх класса с помощью декоратора @Injectable. Затем, используя провайдеров, вы можете выполнять внедрение зависимостей, ведение журнала и другие задачи.
4. Модули
Модули Nestjs не являются глобальными; вместо этого у них есть глубина.
Однако его можно использовать совместно с любыми другими модулями. Хотя он, как и Angular, предлагает глобальные модули, более целесообразно хранить службы/контроллеры в модуле, где они чаще всего используются в Nestjs.
NestCLI чаще всего используется для создания модулей, а провайдеры/контроллеры, сгенерированные в контексте этого модуля, автоматически добавляются CLI. Они известны как функциональные модули.
5. Фильтры исключений
Фильтры исключений — это обработчики ошибок, которые вызываются, когда контроллер создает исключение. Он автоматически решает проблему и выдает соответствующее, удобное для пользователя сообщение об ошибке.
Многие унаследованные исключения HttpException предоставляются пакетом @nestjs/common, включая NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException и многие другие. Вы даже можете создать свой собственный ExceptionFilter.
6. Промежуточное ПО
Функция, которая вызывается перед обработчиком маршрута, называется промежуточным программным обеспечением. Объекты запроса и ответа, а также функция промежуточного программного обеспечения next() в цикле запроса-ответа приложения доступны для функций промежуточного программного обеспечения.
Переменная с именем next обычно используется для определения следующей функции промежуточного слоя. Пользовательское промежуточное ПО Nest можно реализовать в методе или классе с помощью декоратора @Injectable().
7. Охранники
Охранники отвечают только за одно. В их обязанности входит оценка того, будет ли запрос обработан контроллером, исходя из конкретных обстоятельств (в частности, определяемой пользователем логики).
Это полезно для аутентификации/авторизации и является рекомендуемым методом в Nestjs.
Хотя аутентификация/разрешения и т. д. могут быть выполнены с использованием промежуточного программного обеспечения, это не делается на экспресс-серверах или других HTTP-серверах, поскольку они не имеют связанного строгого контекста и не имеют причин знать, какой метод будет использоваться для обработки запроса.
Преимущества
- Фреймворк сильно зависит от аннотаций, которые используются для создания чего угодно, от конечных точек до документации Swagger. Конечные точки просты и аккуратны, а аннотации в целом упрощают разработку.
- Выносить модули общего назначения и повторно использовать код во многих проектах очень просто, поскольку Nest.js — это модульная структура.
- На структуру папок Nest.js значительное влияние оказывает Angular. При разработке сервиса Nest это позволяет минимизировать время простоя.
- Компоненты имеют свои собственные каталоги, причем корень содержит модуль приложения и основной файл. Из-за простоты структуры больше внимания можно уделить дизайну конечных точек и их клиентов, а не структуре приложения.
- Nest, как и Angular, предлагает хороший инструмент командной строки Nestjs/cli, который доступен через Node Package Manager.
Недостатки бонуса без депозита
- У Nest есть преимущество с точки зрения использования TypeScript и интеграции с Angular, но ей не хватает финансовой поддержки огромной корпорации.
- Отсутствие документации представляет наибольшую угрозу для пользователей Nest. Несмотря на то, что фреймворк отлично взаимодействует с другими фреймворками, документация скудна и не устраняет какие-либо потенциальные трудности.
- Nest имеет преимущество с точки зрения использования TypeScript и Angular.
Заключение
NestJS предоставляет разработчикам огромные возможности. Чтобы начать разработку, вам нужно всего лишь создать новое приложение и вы готовы идти. Этот фреймворк сразу обеспечивает значительный прирост, а также помогает вам пройти дополнительные этапы, создав подходящую архитектуру приложения.
Он использует передовые методы и технологии для создания управляемых и долговечных приложений. Его можно использовать для подключения к GraphQL, WebSockets и создания микросервисов.
Оставьте комментарий