第三篇 模块
日更挑战第五天,今天为大家介绍一下Nest中最基础的组成模块module
,module
在Nest算是中枢吧,他管理着每个service
和controller
。
通过module
可以很方便的将这些写好的功能的service
导出,并且加载controller
来实现路由的功能。而且module可以将service注入到cotroller中,来调用service中的方法和属性。
Modules注入:全称依赖注入,是Nest在内部自动的将一个类实力化到另一类的属性里,这就是依赖注入DI。而Nest中做这件事情的核心功能就是Module类修饰器。
如上图所示,每个module直接也是可以互相导入导出的,不过这里有个问题需要注意以下,尽量不要循环导入,比如AModule导入BModule,BModule导入AModule,虽然这样有解决方案可以循环导入,但是这样会产生不必要的浪费。
项目目录
hellowrold从图中我们可以看出整个项目有三个模块:
- app.module 根模块
- user.module 用户业务模块
- admin.module 后台管理模块
代码分析
// app.module.ts
import { Module } from '@nestjs/common';
// 导入nest核心类的装饰器Module
import { UserModule } from './user/user.module';
import { AdminModule } from './admin/admin.module';
// 导入写好的两个模块
@Module({
imports: [UserModule, AdminModule],
// 注册到AppMoudule
})
export class AppModule { }
// Module装饰器必须写在类的上方
// admin.module.ts
import { Module } from '@nestjs/common';
import { AdminService } from './admin.service';
import { AdminController } from './admin.controller';
@Module({
providers: [AdminService],
// 注册在该模块中需要提供功能的服务,在这里注册后,可以在该模块中随意导入
controllers: [AdminController]
// 加载控制器
})
export class AdminModule {}
// user.module.ts
import { Module } from '@nestjs/common';
import { UserService } from './user.service';
import { UserController } from './user.controller';
@Module({
providers: [UserService],
controllers: [UserController]
})
export class UserModule {}
Module装饰器详细介绍
@Module({
imports:[],
// 导入一个或多个模块或服务
providers:[],
// 注册一个或多个服务到整个模块内
controllers:[],
// 加载一个或多个控制器
exports:[]
// 导出一个或多个模块或服务,导出所有的服务直接将自己导出即可实现
})
export class XXX{}
今天的模块就介绍到这里,明天介绍控制器和服务这两个。
该项目的所有代码我已经发布到Git上了,地址:https://github.com/holleworldabc/nest-helloworld
最后关注
、点赞
、收藏
,每天都会更新新的文章。
ByBy咱们明天见。
咱们明天见。
网友评论