# Первые шаги
В этой серии статей вы узнаете основные принципы работы Nest. Чтобы ознакомиться с основами приложений Nest - мы построим базовое CRUD-приложение с функциями, которые охватывают большое количество возможностей на начальном уровне.
# Язык
Мы влюблены в TypeScript (opens new window), но прежде всего мы любим Node.js (opens new window). Поэтому Nest совместим как с TypeScript, так и с чистым JavaScript. Nest использует последние возможности языка, поэтому для его использования с ванильным JavaScript нам нужен компилятор Babel (opens new window).
В примерах мы будем использовать в основном TypeScript, и вам советуем делать так же. (прим. переводчика - Использовать Nest без Typescript неразумно - фреймворк создан именно с прицелом на TS).
# Предварительные условия
Пожалуйста, убедитесь, что Node.js (opens new window) (>= 10.13.0, кроме v13) установлена на вашей операционной системе.
# Установка
Настроить новый проект довольно просто с помощью Nest CLI. Если установлен npm (opens new window), вы можете создать новый проект Nest с помощью следующих команд в терминале вашей ОС:
$ npm i -g @nestjs/cli
$ nest new project-name
Будет создан каталог project-name
, установлены модули node и несколько других шаблонных файлов,
а также создан каталог src/
, который будет заполнен несколькими основными файлами.
Вот краткий обзор этих основных файлов:
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 (opens new window) и fastify (opens new window). Вы можете выбрать тот, который лучше всего подходит для ваших нужд.
platform-express | Express (opens new window) - известный минималистский веб-фреймворк для node. Это проверенная в боях, готовая к продакшену библиотека с большим количеством решений, реализованных сообществом. По умолчанию используется пакет @nestjs/platform-express . |
platform-fastify | Fastify (opens new window) - это высокопроизводительный фреймворк, ориентированный на обеспечение максимальной эффективности и скорости. Читайте, как его использовать здесь. |
Какая бы платформа ни использовалась, она предоставляет свой собственный интерфейс приложения.
Они выглядят соответственно как 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!
.
← Введение Контроллеры →