问题:在nestjs中,创建一个module,在module中创建controller和service,为什么需要在module.ts中注册controller和service才可以找得到?
一个项目的结构大致如下
2、启动项目,可以看到项目的启动日志如下
在启动项目过程中,步骤如下
- 启动application
- 初始化项目根文件app.module的所有依赖
- 注册controller
- 根据请求的方法映射到来的请求
- 项目启动成功
3、打开项目的入口文件main.ts
main.ts中根据appmodule创建nest项目
4、项目启动过程中做了什么?
启动过程,nest IOC容器进行
- 类的实例化
- 查找对象的依赖关系
主要分为两个阶段
- Scan阶段
启动程序,通过AppModule,在scanner模块中逐步寻找相关Module,构造Module依赖树
2、instance阶段
实例化过程,为provider、controller、middleware、interceptor等创建实例
补充:一个module有4部分组成
- imports 引入模块
- controllers:注册controller
- providers:注册service
- exports:导出引入的模块,或者注册的providers