11、使用modules实现模块化

95 阅读1分钟

1、 作用

作用是定义和组织 Nest.js 应用程序的各个模块,它是 Nest.js 应用程序架构的基础之一

2、手动写一个shareModule

  1. 创建shared文件夹,里面创建system.service.ts,然后将SystemService注解为可注入的类

    import { Injectable } from '@nestjs/common'

    @Injectable() export class SystemService { constructor() {} getEnv() { return { a: 1 } } }

  2. 然后创建 shared.module.ts文件,然后用注解将system.service.ts进行provider,这样可以在模块内部使用,若别的模块也想使用,可以用exports

    import { Module } from "@nestjs/common"; import { SystemService } from "./system.service";

    @Module({ exports: [SystemService], providers: [SystemService], }) export class ShareModule {}

  3. 然后在users.module中可以导入shared.module,这样可以直接使用该模块

    import { Module } from '@nestjs/common'; import { UsersService } from './users.service'; import { UsersController } from './users.controller'; import { ShareModule } from 'src/shared/shared.module';

    @Module({ controllers: [UsersController], providers: [UsersService], imports: [ShareModule] }) export class UsersModule {}

  4. 最后我们可以在users.service里,在构造函数中挂载上去,然后get请求时进行调用

    import { Injectable } from '@nestjs/common'; import { CreateUserDto } from './dto/create-user.dto'; import { UpdateUserDto } from './dto/update-user.dto'; import { SystemService } from 'src/shared/system.service';

    @Injectable() export class UsersService {

    constructor(private readonly systemService: SystemService) {

    }

    create(createUserDto: CreateUserDto) { return 'This action adds a new user'; }

    findAll() { console.log('env',this.systemService.getEnv()); return This action returns all111 users; }

    findOne(id: number) { return This action returns a #${id} user; }

    update(id: number, updateUserDto: UpdateUserDto) { return This action updates a #${id} user; }

    remove(id: number) { return This action removes a #${id} user; } }

  5. 然后我们访问一下,可以看到执行了