首页 > 其他分享 >004模块

004模块

时间:2024-04-11 11:01:43浏览次数:27  
标签:providers CatsService Module cats 模块 004 import

一、介绍

模块是用 @Module() 装饰器注释的类。@Module() 装饰器提供 Nest 用于组织应用结构的元数据。

每个应用至少有一个模块,即根模块。也就是app.module
这个类似于前端的组件,都需要要一个根组件,同时也是推荐的构建程序的有效方式。(前端组件,后端模块)
他的配置中包含以下几个属性:

属性名 描述
providers 将由 Nest 注入器实例化并且至少可以在该模块中共享的提供程序
controllers 此模块中定义的必须实例化的控制器集
imports 导出此模块所需的提供程序的导入模块列表
exports 这个模块提供的 providers 的子集应该在导入这个模块的其他模块中可用。你可以使用提供器本身或仅使用其令牌(provide 值)

二、分类

1.功能模块

我们之前写的cats就是一个功能模块
只不过他也是程序的根模块
现在我们把它抽离到单独的模块中,并在根模块中导入

import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';

@Module({
  controllers: [CatsController],
  providers: [CatsService],
})
export class CatsModule {}

在根模块导入

import { Module } from '@nestjs/common';
import { CatsModule } from './cats/cats.module';

@Module({
  imports: [CatsModule],
})
export class AppModule {}

现在cats就是一个独立的功能模块

2.共享模块

每一个模块在创建后就自动成为共享模块。一旦创建,它就可以被任何模块重用,只需要在exports中导出需要共享的内容

import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
@Module({
  controllers: [CatsController],
  providers: [CatsService],
  exports: [CatsService]
})
export class CatsModule {}

3.全局模块

只需要在模块上加入@Global()装饰器

import { Module, Global } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
@Global()
@Module({
  controllers: [CatsController],
  providers: [CatsService],
  exports: [CatsService],
})
export class CatsModule {}

4.动态模块

也就是自定义模块,后续单独介绍,我们现在只看个例子

import { Module, DynamicModule } from '@nestjs/common';
import { createDatabaseProviders } from './database.providers';
import { Connection } from './connection.provider';

@Module({
  providers: [Connection],
})
export class DatabaseModule {
  static forRoot(entities = [], options?): DynamicModule {
    const providers = createDatabaseProviders(options, entities);
    return {
      module: DatabaseModule,
      providers: providers,
      exports: providers,
    };
  }
}

整体就是实现forRoot方法

标签:providers,CatsService,Module,cats,模块,004,import
From: https://www.cnblogs.com/idrinkmilk/p/18128393

相关文章

  • 随着AI算力需求不断增强,800G光模块的需求不断增大
    在人工智能芯片(AIGC)和算力不断发展的背景下,光模块产业正在迎来快速发展的时期。随着光模块朝着更高速率的技术发展,硅光技术的成本也在逐步降低,同时降低功耗也成为市场需求的重要方面。预计到2024年,硅光方案将逐渐在400G和800G光模块的需求中占据市场份额,而1.6T时代也将逐年提......
  • pymysql模块
    pymysql模块基本语法#(1)创建连接对象hostuserpassworddatabase这四个参数必写conn=pymysql.connect(host="127.0.0.1",user="root",password="123456",database="db003",charset="utf8",port=3306)#(2)创建游标对象(......
  • 比nestjs更优雅的ioc:跨模块访问资源
    使用ts的最佳境界:化类型于无形在项目中使用ts可以带来类型智能提示与校验的诸多好处。同时,为了减少类型标注,达到化类型于无形的效果,CabloyJS引入了ioc和依赖查找的机制。在上一篇文章中,我们创建了一个业务模块test-home,并且采用依赖查找的机制演示了如何优雅的定义和使用资源,包括......
  • Python 模块化设计
             模块化设计是一种软件设计方法,它将程序分解成小的、独立的部分,这些部分称为模块。每个模块都有它的功能,并且设计成可以被其他模块重用。在Python中,模块化设计不仅有助于代码的组织和维护,还能提升代码复用性和开发效率。        1.定义模块在Pyth......
  • Spring Maven项目添加web模块
    问题描述:IDEA新建的maven项目没有web模块,如何新增web模块?操作步骤:1、选中对应的模块名称,右键单击“OpenModuleSettings” 2、如果模块下②web存在,则按照图一步骤顺序,依次选择“+”,在Type单击web.xml,path路径为默认路径,如果想要修改,可以单击步骤⑤修改,否则,执行步骤⑥和⑦......
  • 利用IIS的反向代理模块,实现类似镜像站的效果
    ......
  • 51单片机led灯模块
    1.151单片机led灯的点亮根据进制转换表,将二进制转换成16进制其中程序中的P2口,0x是表示后面是16进制的1.2led闪烁1.3 led流水灯#include<REGX52.H>voidDelay1ms(unsignedintxms)   //@12.000MHz{   unsignedchardatai,j;   while(xms)......
  • CTFshow-Web入门模块-爆破
    CTFshow-Web入门模块-爆破by故人叹、web21考察点:burpsuite使用、自定义迭代器使用题目提供了字典,要求登录并提示了爆破,使用burpsuite抓包并操作:(1)用户名一般为admin,密码随意输,抓包并发送给爆破模块。可以看到Basic后有一段base64编码,解码得到用户名:密码的格式,证明我们之......
  • Python包和模块
    Python中的模块和包是用于组织代码的关键构造。它们可以帮助你将代码逻辑划分成可管理的部分,防止命名空间(namesspace)的冲突,并提供分享和重用代码的方式。一、模块模块是一个包含Python代码的文件。模块的名称就是文件的名称(不包含后缀.py)模块可以包含定义的函数,类,变量,也可......
  • Nginx模块安装配置
    Nginx模块安装配置一、查看nginx安装的模块要查看Nginx安装了哪些模块,可以使用Nginx的二进制文件运行nginx-V命令。这将输出Nginx版本和配置参数,包括编译时包含的模块。在命令行中运行以下命令:nginx-V查看输出中的--with-参数,这些参数后面通常会跟着模块名称,比如--w......