模块
Nest
提供了一种模块化的方式—— Module
来组织和管理你的 Nest
程序和代码。
每个 Nest
应用至少要有一个根模块,作为 Nest
应用的入口模块,每个模块都可以看做根模块下的子模块,当这些子模块组合起来,形成一个完整的 Nest
应用。
默认情况下,模块就像是一个“封闭”的盒子,盒子提供了特定的工具,工具会在盒子存在期间,在盒子内共享这些工具功能。
元数据
模块是具有 @Module()
装饰器的类。@Module()
装饰器接受一个对象参数,接口类型为 ModuleMetadata
,它有四个字段,全是数组类型:
providers
:模块中所有注入的依赖列表,当前模块会共享它们。contrllers
:控制器列表,可注册多个。exports
:默认情况模块是封闭的,它导出模块的依赖,模块内共享使用。imports
:导入其他模块或者其他模块的providers
列表。
有了这些参数,Nest
的 IoC
容器才能准确识别需要组装(注入与被注入)各种依赖关系。