Первые шаги

В этом наборе статей вы узнаете основные принципы 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/ с несколькими основными файлами.

src
app.controller.ts
app.module.ts
main.ts

Вот краткое описание этих файлов:

app.controller.tsБазовый образец контроллера с одним маршрутом.
app.module.tsКорневой модуль приложения.
main.tsТочка входа в которой используется функция NestFactory для создания экземпляра Nest приложения.

The main.ts includes an async function, which will bootstrap our application:

main.ts
JS TS
TypeScript

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();
TypeScript

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-expressExpress - хорошо известный, минималистичный, веб фреймворк для Nodejs. Проверена в бою, готовая к работе библиотека с большим количеством пакетов реализованных ее сообществом. Пакет @nestjs/platform-express используется по умолчанию. Многим хорошо подходит Express, и им не нужно предпринимать ни каких действий, чтобы включить его.
platform-fastifyFastify - высокопроизводительный и low overhead фреймворк сосредоточенный на максимльной эффективности и скорости. Как его использовать можно прочитать здесь.

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

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

TypeScript

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

Маршрутизация приложения#

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


$ npm run start

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

Support us

Nest is an MIT-licensed open source project. It can grow thanks to the support by these awesome people. If you'd like to join them, please read more here.

Principal Sponsor

Sponsors / Partners

Become a sponsor