集成了如下技术:
- ORM:typeorm
- 认证:passport
- 文档:swagger
- 日志工具:nest-pino
开发之前请详细阅读项目中的所有文档(各个目录下的README.md
)文件,以及熟悉相关技术中提到的所有技术。
git clone https://github.com/YES-Lee/nestjs-starter.git # 拉取代码
cd nestjs-starter
yarn install
yarn start:dev
swagger地址:http://localhost:3001/swagger
src
├─ config // 配置模块
├─ database // 数据库模块
│ └─ entities // typeorm实体类
├─ decorators // 自定义装饰器目录
├─ dto // restful 接口模型目录
├─ enums // 枚举目录
├─ filters // error filters
├─ interceptors // interceptors
├─ pipes // pipes
└─ modules // 业务逻辑模块目录,所有业务相关逻辑都放到该目录对应的模块
所有业务相关的逻辑都应存放于modules
目录下,接口按照功能模块划分,通常以表为参考,即一张表(除关系表外)对应一个功能模块。例如:用户相关的功能,应该全部位于/modules/user/
目录下。
接口返回格式统一为
{
error_code: number; // 错误码,只有异常时才会返回
error_message: string; // 错误信息,只有异常时才会返回
data: any;
timestamp: any; // 时间戳
}
在src/dto/support/ApiResponse.ts
导出的类包含了API请求结果相关的工厂方法,比如
// 请求成功
const result = ApiResponse.success(data)
// 请求失败
const result = ApiResponse.error(10001, '请求失败')
部署app方式有多种,这里提供一个pm2
管理方式,有三种部署方式,根据不同场景选择使用
- 编译:
npm run build
- 拷贝
package.json
,pm2.config.js
到dist
目录(需要修改pm2.config.js文件
) dist
目录上传到服务器- 到
dist
目录执行npm install --production
- 启动:
pm2 pm2.config.js
- 在服务器拉取仓库
npm install
npm run build
,pm2 pm2.config.js
nest g module modules/{your_module_name}
nest g service modules/{your_service_name}
nest g controller modules/{your_controller_name}
nest g resolver modules/{your_resolver_name}
- 基础1 [nodejs] https://nodejs.org/en/docs/
- 基础2 [typescript] https://www.tslang.cn/docs/home.html
- 项目框架 [nestjs] https://docs.nestjs.com/
- 框架平台 [express] https://expressjs.com/
- 数据库ORM框架 [typeorm] https://typeorm.io/
- 登录认证 [Passport.js] http://www.passportjs.org/
- 文档 [swagger-ui-express] https://www.npmjs.com/package/swagger-ui-express