==== Установка# ==== Создать новый проект c помощью [[:cli:overview|Nest CLI]] очень легко. С установленным [[https://www.npmjs.com/|yarn]] , вы можете создать новый проект Nest в терминале ОС с помощью следующих команд: $ yarn global add @nestjs/cli $ nest new <имя_проекта> **Подсказка** Для создания нового проекта с включенным [[https://www.typescriptlang.org/tsconfig#strict|строгим режимом]] TypeScript, необходимо добавить флаг ''--strict'' в команде ''nest new''. При это будет создан катлог для нашего проекта с указанным нами именем ''<имя_проекта>'', в котором будет находиться папка с установленными модулями ''node_modules'' и несколько шаблонных файлов, а также будет создан каталог ''src/'' и заполнен несколькими основными файлами. {{:nodejs:frameworks:nestjs:1.png|}} Описание основных файлов: |''app.controller.ts''|Основной контроллер с одним маршрутом.| |''app.controller.spec.ts''|Юнит-тесты для контроллера. контроллера.| |''app.module.ts''|Корневой модуль приложения.| |''app.service.ts''|Базовый сервис с единственным методом.| |''main.ts''|Файл точки входа в приложение который использует функцию ''NestFactory'' для создания экземпляра приложения Nest.| В ''main.ts'' добавлена асинхронная функция ''bootstrap()'', которая запускает наше приложение: 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(); JS 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, создает начальную структуру проекта, которая побуждает разработчиков следовать соглашению о хранении каждого модуля в отдельном каталоге. **Подсказка** По умолчанию, если при создании приложения произойдет какая-либо ошибка, ваше приложение звершится с кодом ''1''. Если вы хотите, чтобы он выдавал ошибку, вместо этого отключите параметр ''abortOnError'' (напр., ''NestFactory.create(AppModule, { abortOnError: false })''). === Платформа# === Nest стремится быть платформенно-независимой. Независимость от платформы позволяет создавать переиспользуемые логические части, которые разработчики могут использовать в различных частях приложения. Технически Nest может работать с любым Node HTTP фреймворком после создания адаптера. По умолчанию поддержевается две платформы: [[https://expressjs.com/|express]] and [[https://www.fastify.io|fastify]]. Вы можете выбрать ту платформу, которая лучше подходит вашим потребностям. |''platform-express''|[[https://expressjs.com/|Express]] — это известный, как минималистский и гибкий веб-фреймворк для node. Это проверенная, готовая к работе библиотека с множеством ресурсов, реализованных сообществом. Пакет ''@nestjs/platform-express'' используется по умолчанию. Многие пользователи хорошо знакомы с Express, и им не нужно предпринимать никаких действий, чтобы включить его..| |''platform-fastify''|[[https://www.fastify.io/|Fastify]] — это высокопроизводительный фреймворк с низкими накладными расходами, ориентированный на обеспечение максимальной эффективности и скорости. Прочитайте, как это использовать [[:techniques:performance|здесь]].| Какая бы платформа ни использовалась, она предоставляет собственный интерфейс приложения. Они рассматриваются соответственно как ''NestExpressApplication'' и ''NestFastifyApplication''. Когда вы передаете тип методу ''NestFactory.create()'', как в примере ниже, объект ''app'' будет иметь методы, доступные исключительно для этой конкретной платформы. Однако обратите внимание, что вам не **нужно** указывать тип, за исключением если вы дейтсвительно хотите получить доступ к лежащий в основе API платформы. const app = await NestFactory.create(AppModule); === Запуск приложения# === После завершения процесса установки, чтобы запустить приложение (прослушивающее входящие HTTP-запросы) в командной строке ОС выполните следующую команду: $ yarn start Эта команда запускает приложение с HTTP-сервером, прослушивающим порт, указанный в файле ''src/main.ts''. После запуска приложения откройте браузер и перейдите к ''http://localhost:3000/''. Вы должны увидеть надпись ''Hello World!''! Чтобы отслеживать изменения в ваших файлах, вы можете запустить следующую команду для запуска приложения: $ yarn start:dev Эта команда будет следить за вашими файлами, автоматически перекомпилируя и перезагружая сервер.