Обмен технологиями

Введение в провайдеров [NestJs] в одной статье

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Серия обучения Nest

✈️Начало работы с [NestJS] в одной статье.
✈️Знакомство с контроллерами [NestJs] в одной статье.

🚩 前言

В мире NestJS понимание «поставщиков» является ключом к созданию надежных и удобных в обслуживании серверных сервисов. NestJS, как современная платформа для Node.js, использует некоторые основные концепции Angular, такие как внедрение зависимостей (DI), и применяет их к разработке на стороне сервера. В этой статье мы углубимся в механизм провайдеров в NestJS, проанализируем, как он работает и как их использовать для оптимизации вашего приложения.

🚩什么是 Providers

В NestJS поставщик — это любой объект, которым может управлять и который можно внедрить из DI-контейнера. Это может быть класс, значение, фабричная функция или абстрактный интерфейс. Основная роль Провайдеров — предоставлять услуги, значения или фабрики, которые могут совместно использоваться и повторно использоваться другими модулями или компонентами.

Я узнал о контроллере Nest в предыдущей статье. В этой статье представлен еще один важный момент: провайдеров можно понимать как часть контроллера, которая предоставляет услуги, и их также можно называть сервисами.

🚩如何创建一个 service

новости службы nest g

Это простой сервис, который на данный момент имеет две функции: одна — вернуть список всех новостей, а другая — создать фрагмент данных.
Вставьте сюда описание изображения
Вставьте сюда описание изображения

🚩service如何为controller提供服务

внедрение зависимости

Первый шаг: ввести в контроллере соответствующий сервис и соответствующий тип интерфейса.

новости.контроллер.ts

import { NewsService } from './news.service';
import { News } from './interfaces/news.interface';
  • 1
  • 2

Шаг 2. Внедрение через конструктор (частный newsService: NewsService) {}

@Controller('news')
export class NewsController {
	constructor(private  newsService: NewsService) {}
	.....
}
  • 1
  • 2
  • 3
  • 4
  • 5

Шаг 3. Используйте его в соответствующем декораторе запроса.

@Controller('news')
export class NewsController {
	constructor(private  newsService: NewsService) {}
 	@Get('/page')
	async getNewsPageList(@Query() query: string): Promise<News[]> {
        console.log(query);
        return this.newsService.getNewsPageList();
    }

   @Post('/create')
   async  createNews(@Body() createNewsDto: CreateNewsDto) {
        console.log(createNewsDto,'添加参数');
        return this.newsService.createNews(createNewsDto);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

Шаг 4. Зарегистрируйтесь в app.module.

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { NewsController } from './news/news.controller';
import { NewsService } from './news/news.service';

@Module({
  imports: [],
  controllers: [AppController, NewsController],
  providers: [AppService,NewsService],
})
export class AppModule {}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

Заключение

Освоение провайдеров в NestJS означает, что вы сможете лучше создавать модульные и масштабируемые серверные службы. Правильно используя провайдеров, вы можете легко управлять зависимостями и улучшать читаемость и удобство обслуживания кода. Независимо от того, создаете ли вы сложную архитектуру микросервиса или простой сервис API, механизм DI NestJS станет для вас незаменимым инструментом.