首页 > 其他分享 >nestJs 模块

nestJs 模块

时间:2023-03-31 18:25:57浏览次数:49  
标签:app Global module nestJs 模块 import user

文档:

https://docs.nestjs.cn/9/modules

模块@Module
每个 Nest 应用程序至少有一个模块,即根模块。

根模块是 Nest 开始安排应用程序树的地方。

事实上,根模块可能是应用程序中唯一的模块,

特别是当应用程序很小时,但是对于大型程序来说这是没有意义的。

在大多数情况下,您将拥有多个模块,每个模块都有一组紧密相关的功能

基本用法-功能模块

当我们使用nest cli 工具 创建一个CURD模板的时候 nestjs 会自动帮我们引入模块

nest g res module1

image-20230331163546615

所以我们一般不用自己引入

共享模块

例如 user 的 Service 想暴露给 其他模块使用就可以使用exports 导出该服务

例:

exports:[UserService]

image-20230331170056908

由于App.modules 已经引入过该模块 就可以直接使用user 模块的 Service

image-20230331164923214

在app.controller 中使用

image-20230331164519844

全局模块

@Global()

我们给 user 模块添加 @Global() 他便注册为全局模块

image-20230331171410949

在其他模块使用无须在module import 导入

image-20230331172300152

动态模块

动态模块主要就是为了给模块传递参数 可以给该模块添加一个静态方法 用来接受参数

例:

创建模块config

nest g mo config

image-20230331174339365

config 模块实现

import { DynamicModule, Global, Module } from '@nestjs/common';

// 定义 Options
interface Options {
  path: string
}

@Global()
@Module({})
export class ConfigModule {
  static forRoot(options: Options): DynamicModule {
    return {
      module: ConfigModule,
      providers: [
        {
          provide: "Config",
          useValue: { baseApi: "/api" + options.path }
        }
      ],
      exports: [
        {
          provide: "Config",
          useValue: { baseApi: "/api" + options.path }
        }
      ]
    }
  }

}

引入使用

在其他模块中引入

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { CatsController } from './cats/cats.controller';
import { MakaloModule } from './makalo/makalo.module';
import { UploadModule } from './upload/upload.module';
import { UserModule } from './user/user.module';
import { Module1Module } from './module1/module1.module';
import { ConfigModule } from './config/config.module';

@Module({
  imports: [MakaloModule, UploadModule, UserModule, Module1Module,
    ConfigModule.forRoot({path: '/makalo'})
  ],
  controllers: [AppController, CatsController],
  providers: [AppService],
})
export class AppModule {}

image-20230331180045051

由于 使用了 @Global() ,直接在 app.controller 中使用即可

例:

import { Controller, Get, Inject } from '@nestjs/common';
import { AppService } from './app.service';
import { UserService } from './user/user.service';

@Controller()
export class AppController {
  constructor(
    private readonly appService: AppService,
    @Inject('Config') private readonly baseApi: string
  ) {}

  @Get()
  getHello(): string {
    return this.baseApi;
  }
}

访问

image-20230331180957466

标签:app,Global,module,nestJs,模块,import,user
From: https://www.cnblogs.com/makalochen/p/17277134.html

相关文章

  • concurrent.futures 模块
    应用场景#什么时候用池池的功能是限制启动的进程数或线程数#什么时候应该限制当并发的任务数量远远超过了计算机的承受能力时,即无法一次性开启过多的进程数或线程数时,就应该用池的概念,将开启的进程数或线程数限制在计算机的可承受范围内#提交任务的两种形式1.同步:提......
  • A模块练习题
    mysql练习题1.查找数据库版本号mysql>selectversion();2.查找数据库列表mysql>showtables;3.查看所有用户和权限,找到可以从任意IP地址访问mysql>showgrantsforroot@localhostmysql>selectdistinctconcat('user:''',user,'''@''',......
  • NestJs 提供者
    文档:https://docs.nestjs.cn/9/providersProviders是Nest的一个基本概念。许多基本的Nest类可能被视为provider-service,repository,factory,helper等等。他们都可以通过constructor注入依赖关系。这意味着对象可以彼此创建各种关系,并且“连接”对象实例的功能......
  • 关于python 的if __name__ == "__main__"的模块测试
    if__name__=="__main__"也就是说执行当前文件,不调用模块的时候__name__=__main__调用模块的时候,测试如下:1、新建test01.py文件测试代码如下print("这条消息来自test01")deffunc():print('hello,world!***')print("这条消息来自func")if__name__=="__......
  • ansible 常用模块 service
    模块说明Manageservices参数说明ParameterCommentsargumentsaliases:argsstring命令行上提供了其他参数。将远程主机与systemd一起使用时,此设置将被忽略。enabled boolean服务是否应在启动时启动。至少需要state和enabled中的......
  • ansible 常用模块 archive
    模块说明该unarchive模块解压缩存档。它不会解压缩不包含存档的压缩文件。默认情况下,它会在解包之前将源文件从本地系统复制到目标。设置remote_src=yes为解压缩目标上已存在的存档。在目标主机上需要zipinfo和gtar/unzip命令。需要目标主机上的zstd命令来展开.tar......
  • ansible 常用模块 user
    模块说明管理用户帐户和用户属性。此模块用于useradd创建、usermod修改和userdel删除帐户。参数ParameterCommentsappend boolean如果true,将用户添加到中指定的组groups。如果false,用户将只被添加到在指定的组中groups,将他们从所有其他组中删......
  • ansible 常用模块 group
    参数参数选项/默认值描述gidinterger 要为组设置的可选GID。localbooleanfalse ←(默认)true强制在实现它的平台上使用“local”命令替代项。这在要操作本地组时使用集中式身份验证的环境中非常有用。(例如,它使用代替lgroupaddgroupadd)。namestr......
  • nestJs 控制器
    参考:https://docs.nestjs.cn/9/controllers控制器负责处理传入的请求和向客户端返回响应。控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求。通常,每个控制器有多个路由,不同的路由可以执行不同的操作。为了创建一个基本的控制器,我们使用类和装饰器。......
  • DC-DC直流线性可调升压模块高压稳压输出电源5v12v24v48v转0-300V0-500V/0-600V/0-1000
    GRB系列非隔离宽电压输入高电压稳压输出特点 效率高达75%以上 1*2英寸标准封装 单电压输出 可直接焊在PCB上 工作温度:-40℃~+75℃ 阻燃封装,满足UL94-V0要求 温度特性好 电压控制输出,输出电压随控制电压的变化线应用GRB系列模块电源是一种DC-DC升压变换器。该模块电......