Почему вам стоит подумать о NestJS для вашего следующего проекта

Это первая часть серии статей о фреймворке Node.js, известном как NestJS. В этой статье мы увидим, почему и как использовать NestJS.

Моя история Node.js

Я использую Express.js с 2017 года, и мне нравится Express.js - он хорошо спроектирован, и мы можем подключить любую библиотеку JavaScript и использовать ее.

Я долгое время был разработчиком .Net и сейчас работаю с Angular. При работе с ExpressJS мне не хватает нескольких вещей.

Экосистема Angular против экосистемы Node.js / Express.js

  • CLI: Angular предлагает нам CLI, чтобы легко начать работу с новым проектом. Даже в .Net я могу создать приложение с помощью интерфейса командной строки. Хотя доступно множество генераторов, интерфейс командной строки с ExpressJS был бы отличным дополнением.
  • Чистая архитектура: ExpressJS не имеет определенной чистой архитектуры, и, конечно же, это не цель ExpressJS, поскольку вы можете определять свою собственную архитектуру. Но для корпоративного приложения я предпочитаю что-то с чистой и четко определенной архитектурой.
  • Совместное использование кода: для крупного корпоративного приложения нам может потребоваться совместное использование кода в нескольких приложениях или даже API. В других языках программирования этого можно достичь с помощью библиотек. В ExpressJS мы можем создать модуль npm и сделать его доступным через Artifactory.

NestJS спешит на помощь

NestJS - это фреймворк, который написан поверх ExpressJS и написан на TypeScript. Давайте посмотрим на некоторые преимущества:

  • Поддержка TypeScript: NestJS поддерживает TypeScript, что мне очень удобно, поскольку я давно использую TypeScript, работая с Angular. У вас также есть возможность выбрать JavaScript.
  • Совместное использование кода: NestJS поддерживает создание библиотек и приложений с помощью интерфейса командной строки. Делиться кодом становится действительно легко, и он становится отличным выбором для корпоративных приложений.
  • Поддержка монорепозитория: Angular поддерживает монорепозиторий, а начиная с версии 6, NestJS поддерживает монорепозицию.
  • Путь обучения. Еще одна вещь, которая мне нравится в NestJS, - это то, что если вы работаете с .Net или Java и имеете представление о создании API, NestJS легко освоить. Кроме того, если вы разработчик Angular, вы будете чувствовать себя как дома, поскольку он следует той же модульной схеме.
  • Поддержка Fastify: NestJS использует ExpressJS в качестве платформы по умолчанию, но он также поддерживает Fastify и может быть легко настроен.

Архитектура

Если мне нужно определить архитектуру API, созданного с помощью NestJS, это будет выглядеть так: у нас есть доступный корневой модуль, который будет использоваться для настройки поставщиков баз данных, для определения контроллера, для добавления промежуточного программного обеспечения, для добавления канала и охранников, и для оказания услуг.

У нас также может быть модуль для каждого контроллера. Мы увидим, как этого добиться в следующих статьях. Как только наш модуль получит запрос, он будет перенаправлен на соответствующий контроллер (который будет обрабатывать запрос). Услуга не является обязательной, но мы должны попытаться использовать ее, чтобы следовать принципу единой ответственности (SRP).

Установка

Теперь у нас есть идея, почему мы должны использовать NestJS. Посмотрим, как это использовать.

  • Прежде чем мы сможем начать использовать NestJS, нам нужно установить NestJS CLI. Выполните следующую команду, чтобы установить интерфейс командной строки глобально:
npm install -g @nestjs/cli

Создание нашего первого API

  • После установки интерфейса командной строки выполните следующую команду, чтобы создать новое приложение с именем shoppingAPI. Мы будем использовать тот же API для наших будущих статей.
nest new shoppingAPI
  • Интерфейс командной строки создает приложение, используя Typescript в качестве языка по умолчанию. Если вам нравится JavaScript в качестве языка, вы можете запустить следующую команду:
nest new shoppingAPI -l JS

Запуск и тестирование API

После создания нового проекта мы можем использовать следующую команду для запуска приложения.

cd shopping-API
npm start

По умолчанию приложение настроено для работы на порту 3000. Как только один контроллер уже определен, посетите http: // localhost: 3000 /, и вы получите Hello World! в качестве ответа.

Мы создали наше первое приложение с использованием NestJS с минимальной конфигурацией. В следующей части мы рассмотрим структуру приложения и настроим наш собственный контроллер для обработки HTTP-запросов.

Заключение

NestJS действительно легко начать, и если вы уже использовали .Net, Java или даже ExpressJS, большинство концепций схожи.

Он предлагает интерфейс командной строки, и с его помощью мы можем легко сформировать наше приложение и больше сосредоточиться на нашем коде. Для корпоративного приложения становится действительно легко разделить код на несколько модулей с помощью модулей NestJS.

Особая благодарность @MarkPieszak за обзор.