nestjs的模块

一.基本概念

1、主要作用?

使用Module装饰器所装饰的类,用来组织应用程序结构。每个nestjs应用都至少会有一个根模块,当应用比较小的时候,把所有控制器,service都挂载在根模块下面还是合适的,但是当应用足够大的时候,就非常有必要进行模块划分了,如下图所示:

模块示例

2、如何使用脚手架生成模块?

1
nest g module name(or dir)

3、在子模块中哪些是公开的,哪些是私有的?

在子模块中所定义的controller以及service默认是私有的。

如何使用其它模块下的服务(或者说怎么让服务公开)?比如说根模块中的providers中的服务,如果想要在子模块A中使用的话,那么需要下面这两步:在A模块中的providers进行声明;在controller中的constructor中进行依赖注入。

4、共享模块?

共享模块就是把自己想暴露的东西给暴露出去,怎样暴露?通过exports属性里面声明想暴露出去的东西;共享模块如何被使用?假设模块A想使用共享模块B的某个service的话,那么需要在A模块的imports属性里面引入B模块,一旦引入了,就可以直接在A模块中的controller根据依赖注入进行直接使用。