Настроить новый проект довольно просто с помощью Nest CLI. Если установлен npm, вы можете создать новый проект Nest с помощью следующих команд в терминале вашей ОС:

$ npm i -g @nestjs/cli
$ nest new project-name

Будет создан каталог project-name, установлены модули node и несколько других шаблонных файлов, а также создан каталог src/, который будет заполнен несколькими основными файлами.

- src
-- app.controller.spec.ts
-- app.controller.ts
-- app.module.ts
-- app.service.ts
-- main.ts
app.controller.tsБазовый контроллер с одним маршрутом.
app.controller.spec.tsЮнит-тесты для контроллера.
app.module.tsКорневой модуль приложения.
app.service.tsБазовый сервис с единственным методом.
main.tsВходной файл приложения, который использует функцию NestFactory для создания экземпляра приложения Nest.

В main.ts включена асинхронная функция, которая будет инициализировать наше приложение:

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

Для создания экземпляра приложения Nest мы используем основной класс NestFactory. NestFactory позволяет создать экземпляр приложения. Метод create() возвращает объект приложения, который соответствует интерфейсу INestApplication. Этот объект предоставляет набор методов, которые будут описаны в последующих главах. В приведенном выше примере main.ts мы просто запускаем HTTP-сервер, который позволяет приложению обрабатывать входящие HTTP-запросов.

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

Платформа

Nest стремится быть фреймворком независимым от платформы. Независимость от платформы позволяет создавать логические части, которые разработчики могут повторно использовать в различных частях приложения. Технически, Nest может работать с любым Node HTTP фреймворком после создания адаптера. Из коробки поддерживаются два фреймворка HTTP: express и fastify. Вы можете выбрать тот, который лучше всего подходит для ваших нужд.

Express - известный минималистский веб-фреймворк для node. Это проверенная в боях, готовая к продакшену библиотека с большим количеством решений, реализованных сообществом. По умолчанию используется пакет @nestjs/platform-express.

Fastify - это высокопроизводительный фреймворк, ориентированный на обеспечение максимальной эффективности и скорости.

Какая бы платформа ни использовалась, она предоставляет свой собственный интерфейс приложения. Они выглядят соответственно как NestExpressApplication и NestFastifyApplication.

Когда вы передаете тип в метод NestFactory.create(), как в примере ниже, объект app будет иметь методы, доступные исключительно для этой конкретной платформы. Однако обратите внимание, что вам не нужно указывать тип если вы не хотите получить доступ к API базовой платформы.

const app = await NestFactory.create<NestExpressApplication>(AppModule);

Запуск приложения

После завершения процесса установки вы можете выполнить следующую команду в командной строке вашей ОС, чтобы запустить приложение, принимающее входящие HTTP-запросы:

$ npm run start

Эта команда запустит приложение с HTTP-сервером, слушающим порт, определенный в файле src/main.ts. После запуска приложения откройте браузер и перейдите по адресу http://localhost:3000/. Вы должны увидеть сообщение Hello World!.