2.nestjs:根据业务划分不同的module
module的概念建议自己去看看官网的介绍
根据我个人的理解,module是业务域的区分,比如一个系统中有:用户,商品,订单。那么我们就可以建立分别建立用户module,商品module,订单module.然后每个module只管理自己作用域下的provider(类似controller,service)。
如果说我们想UserService使用OrderService,那么首先就要在OrderModule中export:[OrderService],然后在用户module导入OrderModule,现在就可以在UserService的构造方法中注入OrderService使用了。
如果说我们定义一个通用的CommonModule,里面提供的Provider可以供所有Module使用,那么就需要在该CommonModule上加上@Global(),现在其他module在使用CommonModule下CommonService时就可以直接使用,而无需导入CommonModule。全局模块应该只注册一次,最好由根或核心模块注册。
这里创建两个module:
1.internal:全局使用的工具包和代码放在这里,此module注册为全局module,其他module,使用internal的提供的provider时候无需导入此module.
2.user:业务域用户module.
1.创建internal和user的module
nest g module internal
nest g module user
2.创建user的controller和service,不带测试
nest g co user --no-spec
nest g service user --no-spec
3.自行添加一些代码在user 的controller和service用于测试,最终效果
app module(root module):
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { InternalModule } from './internal/internal.module';
import { UserModule } from './user/user.module';
@Module({
imports: [InternalModule, UserModule],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
internal module:
import { Global, Module } from '@nestjs/common';
@Global()
@Module({})
export class InternalModule {}
user module:
import { Module } from '@nestjs/common';
import { UserController } from './user.controller';
import { UserService } from './user.service';
@Module({
controllers: [UserController],
providers: [UserService]
})
export class UserModule {}
user controller
import { Controller, Get } from '@nestjs/common';
import { UserService } from './user.service';
@Controller('user')
export class UserController {
constructor(private readonly userService:UserService){
}
@Get()
async testGet() {
return this.userService.testGet()
}
}
user service
import { Injectable } from '@nestjs/common';
@Injectable()
export class UserService {
async testGet(){
return 'test Get';
}
}
启动之后使用postman调用一下测试成功:
image.png
tips:使用nest脚手架创建对应的资源(module,controller,service)会自动注入module.
nest g module user
nest g controller user
nest service controller user