当前位置: 首页 > news >正文

一文入门【NestJs】Providers

Nest学习系列

✈️一文入门【NestJS】
✈️一文入门【NestJs】Controllers 控制器

🚩 前言

在NestJS的世界里,理解“Providers”是构建健壮、可维护的后端服务的关键。NestJS,作为Node.js的一个现代框架,采用了Angular的一些核心概念,如依赖注入(Dependency Injection,DI),并将其应用于服务器端开发。本文将深入探讨NestJS中的Providers机制,解析其工作原理,以及如何利用它们来优化你的应用程序。

🚩什么是 Providers

在NestJS中,Provider是任何可以被DI容器管理和注入的对象。它可以是一个类、一个值、一个工厂函数或是抽象接口。Providers的主要作用是提供服务、值或工厂,这些可以被其他模块或组件所共享和复用。

在上片文章中了解到了Nest的Controller,这篇文章介绍到另外一个重要的知识点providers;provider可以理解成为Controller提供服务的部分,也可以称为service

🚩如何创建一个 service

nest g service news

这是一个简单的service,目前具有两个功能一个是返回所有的新闻列表,一个是创建一条数据
在这里插入图片描述
在这里插入图片描述

🚩service如何为controller提供服务

依赖注入

第一步:在controller 种引入对应 service,以及对应的接口类型

news.controller.ts

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

第二步:通过constructor(private newsService: NewsService) {}注入

@Controller('news')
export class NewsController {constructor(private  newsService: NewsService) {}.....
}

第三步:在对应的请求装饰器中使用

@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);}
}

第四步:在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 {}

结语

掌握NestJS中的Providers,意味着你能够更好地构建模块化、可扩展的后端服务。通过合理的使用Providers,你可以轻松地管理依赖关系,提高代码的可读性和可维护性。无论是构建复杂的微服务架构,还是简单的API服务,NestJS的DI机制都将是你不可或缺的工具。

http://www.lryc.cn/news/400991.html

相关文章:

  • 云原生(Cloud native)
  • JVM OutOfMemoryError异常模拟
  • 架构师机器学习操作 (MLOps) 指南
  • 【学习笔记】虚幻SkeletalMesh学习(一)基础介绍
  • Apache防盗链、网页压缩、网页缓存
  • LocalAI - 笔记
  • Windows图形界面(GUI)-SDK-C/C++ - 编辑框(edit)
  • 区块链学习05-web3中solidity和move语言
  • web滚动页面到指定位置
  • 操作系统真象还原:实现文件写入
  • FastAPI 学习之路(四十九)WebSockets(五)修复接口测试中的问题
  • STM32智能楼宇照明系统教程
  • 【C语言】原码、反码、补码详解 -《码上有道 ! 》
  • C++找到错误的具体信息
  • Windows 安装Zookeeper
  • 从人工巡检到智能预警:视频AI智能监控技术在水库/河湖/水利防汛抗洪中的应用
  • 【轻松拿捏 】Java-static关键字(面试)
  • 【阶乘】个人练习-Leetcode-LCP 22. 黑白方格画
  • 十七、【文本编辑器(三)】图像坐标变换
  • 生活中生智慧
  • 2024第18届中国西部(成都)教育装备展12月14日举办
  • Webpack看这篇就够了
  • 基于京东电商蓝牙耳机产品评论数据的情感分析与文本分析
  • 【Linux网络】poll{初识poll / poll接口 / poll vs select / poll开发多客户端echo服务器}
  • 数据库db文件损坏修复方法(sqlite3:database disk image is malformed)
  • Prometheus 云原生 - 微服务监控报警系统 (Promethus、Grafana、Node_Exporter)部署、简单使用
  • Spring源码注解篇三:深入理解@Component注解
  • SpringBoot中常用的注解及其用法
  • 【大语言模型】私有化搭建-企业知识库-知识问答系统
  • CSS常用的样式