Первые шаги
В этом наборе статей вы узнаете основные принципы Nest. Чтобы ознакомиться с основными строительными блоками приложений Nest, мы создадим базовое приложение CRUD с функциями, которые охватывают большую часть начального уровня.
Язык#
Мы влюблены в TypeScript, но прежде всего - мы любим Node.js. Это причина по которой Nest совместим как с TypeScript, так и с чистым JavaScript. В Nest применяются свежие возможности языка, поэтому чтобы писать на JavaScript нужно использовать Babel.
В наших примерах мы в основном будем используем TypeScript, но вы всегда можете переключить фрагменты кода на JavaScript, просто кликнув на кнопку переключения языка в верхнем правом углу фрагмента.
Обязательные требования#
Пожалуйста убедитесь что в вашей ОС установлена Node.js (>= 8.9.0).
Setup#
Создать новый проект очень просто с Nest CLI. С помощью npm вы можете создать новый Nest проект выполнив следующие команды в вашем терминале.
$ npm i -g @nestjs/cli
$ nest new project
Будет создана директория project
, в ней node_modules, так же несколько шаблонных файлов, и директория src/
с несколькими основными файлами.
Вот краткое описание этих файлов:
app.controller.ts | Базовый образец контроллера с одним маршрутом. |
app.module.ts | Корневой модуль приложения. |
main.ts | Точка входа в которой используется функция NestFactory для создания экземпляра Nest приложения. |
The main.ts
includes an async function, which will bootstrap our application:
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
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 может работать с любым Nodejs HTTP фреймворком если написать для него адаптер. Из коробки Nest поддерживает два HTTP фреймворка express и fastify. Вы можете выбрать тот, который лучше всего соответствует вашим потребностям.
platform-express | Express - хорошо известный, минималистичный, веб фреймворк для Nodejs. Проверена в бою, готовая к работе библиотека с большим количеством пакетов реализованных ее сообществом. Пакет @nestjs/platform-express используется по умолчанию. Многим хорошо подходит Express, и им не нужно предпринимать ни каких действий, чтобы включить его. |
platform-fastify | Fastify - высокопроизводительный и low overhead фреймворк сосредоточенный на максимльной эффективности и скорости. Как его использовать можно прочитать здесь. |
Какая бы платформа не использовалась, она предоставляет свой API. Соответственно как NestExpressApplication
и NestFastifyApplication
.
Когда вы передаете тип в метод NestFactory.create()
, так как показана в примере ниже, объект приложения (app
) будет иметь методы доступные исключительно для конкретной платформы. Однака вам не нужно указывать тип, если вы не хотите получать доступ к API базовой платформе.
const app = await NestFactory.create<NestExpressApplication>(AppModule);
Маршрутизация приложения#
После завершения процесса установки, вы можете выполнить следующую команду терминале вашей ОС, чтобы запустить сервер на прослушивание входящих HTTP запросов:
$ npm run start
Эта команда запускает HTTP server, который слушает входящие запросы по порту определенном в файле src/main.ts
. После запуска приложения откройте выш браузер и перейдите по адресу http://localhost:3000/
. Вы должны увидеть сообщение Hello World!
.