Создание и запуск проекта NestJS
Что такое NestJS?
NestJS — это фреймворк для создания эффективных и масштабируемых серверных приложений на Node.js. Он написан на TypeScript, вдохновлен Angular и использует модульную архитектуру и паттерн внедрения зависимостей (DI). NestJS предоставляет мощные инструменты и функции, которые позволяют разработчикам легко создавать сложные приложения.
Основные особенности и преимущества NestJS
- Модульная архитектура: Организация кода с использованием модулей делает приложение более структурированным и поддерживаемым.
- Внедрение зависимостей: Предоставляет мощную систему внедрения зависимостей, что повышает тестируемость и поддерживаемость кода.
- Использование TypeScript: Использование статической типизации TypeScript и современных возможностей JavaScript повышает производительность разработки и качество кода.
- Богатый набор декораторов: Декораторы используются для определения контроллеров, сервисов, модулей и т.д., делая код более компактным и интуитивно понятным.
- Мощная экосистема: NestJS имеет широкий спектр сторонних модулей и плагинов, что делает разработку более удобной.
Использование NestJS помогает разработчикам быстро создавать высокопроизводительные веб-приложения и API.
Создание и запуск проекта NestJS с использованием ServBay
В этой статье мы будем использовать предоставленную среду Node.js от ServBay для создания и запуска проекта NestJS. Мы будем использовать функцию "Host" от ServBay для настройки веб-сервера и реализации доступа к проекту через обратный прокси.
Создание проекта NestJS
Инициализация проекта
Сначала убедитесь, что у вас установлена среда Node.js от ServBay. Затем глобально установите NestJS CLI с помощью следующей команды:
bashnpm install -g @nestjs/cli
1В рекомендованной корневой директории сайта ServBay
/Applications/ServBay/www
создайте новый проект NestJS:bashcd /Applications/ServBay/www nest new servbay-nest-app
1
2Следуйте инструкциям для ввода названия проекта (рекомендуется назвать
servbay-nest-app
) и при необходимости выберите другие параметры.Установка зависимостей
Перейдите в директорию проекта и установите зависимости:
bashcd servbay-nest-app npm install
1
2
Изменение вывода содержания проекта NestJS
Изменение файла
src/app.controller.ts
Откройте файл
src/app.controller.ts
и измените содержание для вывода на веб-странице "Hello ServBay!":typescriptimport { Controller, Get } from '@nestjs/common'; @Controller() export class AppController { @Get() getHello(): string { return 'Hello ServBay!'; } }
1
2
3
4
5
6
7
8
9
Переход в режим разработки
Запуск сервера разработки
Запустите сервер разработки и установите порт (например, 8585):
bashPORT=8585 npm run start
1Это запустит локальный сервер разработки и откроет порт 8585.
Настройка обратного прокси ServBay Host
Используйте функцию "Host" от ServBay для доступа к серверу разработки через обратный прокси. В настройках Host в ServBay добавьте новый обратный прокси:
- Имя:
My first NestJS dev site
- Домен:
servbay-nest-test.dev
- Тип хоста:
Обратный прокси
- IP:
127.0.0.1
- Порт:
8585
Подробную инструкцию смотрите в разделе добавления сайта разработки Nodejs.
- Имя:
Доступ к режиму разработки
Откройте браузер и перейдите на
https://servbay-nest-test.dev
, чтобы в реальном времени смотреть проект. Благодаря поддержке ServBay настраиваемых доменных имен и бесплатных SSL-сертификатов вы получите более высокую степень безопасности.
Развертывание на продакшн
Подготовка продакшн-среды
Убедитесь, что ваш проект может нормально работать в продакшн-среде. Обычно проекты NestJS не требуют специальных шагов сборки, но вам может понадобиться настроить некоторые переменные среды или выполнить другие настройки.
Запуск продакшн-сервера
Запустите продакшн-сервер и укажите порт (например, 8586):
bashPORT=8586 NODE_ENV=production npm run start:prod
1Настройка обратного прокси ServBay Host
Используйте функцию "Host" от ServBay для доступа к продакшн-серверу через обратный прокси. В настройках Host в ServBay добавьте новый обратный прокси:
- Имя:
My first NestJS production site
- Домен:
servbay-nest-test.prod
- Тип хоста:
Обратный прокси
- IP:
127.0.0.1
- Порт:
8586
- Имя:
Доступ к продакшн-режиму
Откройте браузер и перейдите на
https://servbay-nest-test.prod
, чтобы посмотреть версию для продакшн. Благодаря настраиваемым доменным именам ServBay и бесплатным SSL-сертификатам, ваш сайт будет обладать более высокой безопасностью и доверенностью.
Подключение базы данных
ServBay поддерживает базы данных Redis, MariaDB, PostgreSQL и MongoDB. Вот примеры подключения этих баз данных.
Подключение MongoDB
Установите
@nestjs/mongoose
иmongoose
:bashnpm install @nestjs/mongoose mongoose
1Затем подключите их в проекте:
typescriptimport { Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [ MongooseModule.forRoot('mongodb://localhost/servbay-nest-app'), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13Подключение Redis
Установите
@nestjs/redis
иredis
:bashnpm install @nestjs/redis redis
1Затем подключите их в проекте:
typescriptimport { Module } from '@nestjs/common'; import { RedisModule } from '@nestjs/redis'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [ RedisModule.forRoot({ url: 'redis://localhost:6379', }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Подключение MariaDB
Установите
@nestjs/typeorm
иmysql2
:bashnpm install @nestjs/typeorm mysql2
1Затем подключите их в проекте:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mariadb', host: 'localhost', port: 3306, username: 'root', password: 'password', database: 'servbay_nest_app', entities: [], synchronize: true, }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Подключение PostgreSQL
Установите
@nestjs/typeorm
иpg
:bashnpm install @nestjs/typeorm pg
1Затем подключите их в проекте:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, username: 'user', password: 'password', database: 'servbay_nest_app', entities: [], synchronize: true, }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Следуя этим шагам, вы успешно создали и запустили проект NestJS, используя функции, предоставленные ServBay, для управления и доступа к проекту, а также подключили различные базы данных.