Nest.js

简单学习Nest 6 第三篇

2020-02-15  本文已影响0人  爱写Bug的程序猿

第三篇 模块

日更挑战第五天,今天为大家介绍一下Nest中最基础的组成模块modulemodule在Nest算是中枢吧,他管理着每个servicecontroller

通过module可以很方便的将这些写好的功能的service导出,并且加载controller来实现路由的功能。而且module可以将service注入到cotroller中,来调用service中的方法和属性。

注入:全称依赖注入,是Nest在内部自动的将一个类实力化到另一类的属性里,这就是依赖注入DI。而Nest中做这件事情的核心功能就是Module类修饰器。

Modules

如上图所示,每个module直接也是可以互相导入导出的,不过这里有个问题需要注意以下,尽量不要循环导入,比如AModule导入BModule,BModule导入AModule,虽然这样有解决方案可以循环导入,但是这样会产生不必要的浪费。

项目目录

hellowrold

从图中我们可以看出整个项目有三个模块:

代码分析

// 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咱们明天见。

咱们明天见。

上一篇下一篇

猜你喜欢

热点阅读