Здесь показаны различия между двумя версиями данной страницы.
| Следующая версия | Предыдущая версия | ||
|
nodejs:frameworks:nestjs:install [2022/11/16 11:45] werwolf создано |
nodejs:frameworks:nestjs:install [2023/01/12 12:18] (текущий) |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | =====Установка===== | + | ==== Установка# ==== |
| + | |||
| + | Создать новый проект c помощью [[:cli:overview|Nest CLI]] очень легко. С установленным [[https://www.npmjs.com/|yarn]] , вы можете создать новый проект Nest в терминале ОС с помощью следующих команд: | ||
| - | Создать новый проект с помощью интерфейса командной строки Nest довольно просто. Установив npm, вы можете создать новый проект Nest с помощью следующих команд в терминале ОС: | ||
| <code bash> | <code bash> | ||
| - | $ npm i -g @nestjs/cli | + | |
| - | $ nest new project-name | + | $ yarn global add @nestjs/cli |
| + | $ nest new <имя_проекта> | ||
| </code> | </code> | ||
| + | |||
| + | <note> **Подсказка** Для создания нового проекта с включенным [[https://www.typescriptlang.org/tsconfig#strict|строгим режимом]] TypeScript, необходимо добавить флаг ''--strict'' в команде ''nest new''.</note> | ||
| + | |||
| + | При это будет создан катлог для нашего проекта с указанным нами именем ''<имя_проекта>'', в котором будет находиться папка с установленными модулями ''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 | ||
| + | |||
| + | |||
| + | <code javascript> | ||
| + | |||
| + | import { NestFactory } from '@nestjs/core'; | ||
| + | import { AppModule } from './app.module'; | ||
| + | |||
| + | async function bootstrap() { | ||
| + | const app = await NestFactory.create(AppModule); | ||
| + | await app.listen(3000); | ||
| + | } | ||
| + | bootstrap(); | ||
| + | </code> | ||
| + | |||
| + | |||
| + | JS TS | ||
| + | <code javascript> | ||
| + | |||
| + | import { NestFactory } from '@nestjs/core'; | ||
| + | import { AppModule } from './app.module'; | ||
| + | |||
| + | async function bootstrap() { | ||
| + | const app = await NestFactory.create(AppModule); | ||
| + | await app.listen(3000); | ||
| + | } | ||
| + | bootstrap(); | ||
| + | </code> | ||
| + | |||
| + | Для создания экземпляра приложения Nest, мы используем основной класс ''NestFactory''. ''NestFactory'' предоставляет несколько статических методов, позволяющих создать экземпляр приложения. Метод ''create()'' возвращает объект приложения, который соответствует интерфейсу ''INestApplication''. Этот объект предоставляет набор методов, описанных в следующих главах. В приведенном выше примере в файле ''main.ts'' мы просто запускаем HTTP-сервер, который позволяет приложению обрабатывать входящие HTTP-запросы. | ||
| + | |||
| + | Обратите внимание, что проект, созданный с помощью Nest CLI, создает начальную структуру проекта, которая побуждает разработчиков следовать соглашению о хранении каждого модуля в отдельном каталоге. | ||
| + | |||
| + | <note> **Подсказка** По умолчанию, если при создании приложения произойдет какая-либо ошибка, ваше приложение звершится с кодом ''1''. Если вы хотите, чтобы он выдавал ошибку, вместо этого отключите параметр ''abortOnError'' (напр., ''NestFactory.create(AppModule, { abortOnError: false })'').</note> | ||
| + | |||
| + | === Платформа# === | ||
| + | |||
| + | 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 платформы. | ||
| + | |||
| + | <code javascript> | ||
| + | |||
| + | const app = await NestFactory.create<NestExpressApplication>(AppModule); | ||
| + | </code> | ||
| + | |||
| + | === Запуск приложения# === | ||
| + | |||
| + | После завершения процесса установки, чтобы запустить приложение (прослушивающее входящие HTTP-запросы) в командной строке ОС выполните следующую команду: | ||
| + | |||
| + | <code bash> | ||
| + | |||
| + | $ yarn start | ||
| + | </code> | ||
| + | |||
| + | Эта команда запускает приложение с HTTP-сервером, прослушивающим порт, указанный в файле ''src/main.ts''. После запуска приложения откройте браузер и перейдите к ''http://localhost:3000/''. Вы должны увидеть надпись ''Hello World!''! | ||
| + | |||
| + | Чтобы отслеживать изменения в ваших файлах, вы можете запустить следующую команду для запуска приложения: | ||
| + | |||
| + | <code bash> | ||
| + | |||
| + | $ yarn start:dev | ||
| + | </code> | ||
| + | |||
| + | Эта команда будет следить за вашими файлами, автоматически перекомпилируя и перезагружая сервер. | ||