NestJs系列-开胃小菜(一)基本说明和项目初始化

1,114 阅读2分钟

准备工作

环境情况

  • node版本

node >= v12.18.4

  • npm版本

npm >= 6.14.6 为什么要大于这个版本呢,因为npm6之后可以使用npx呀!

安装脚手架

  • 安装全局脚手架
npm i -g @nestjs/cli

创建项目

project-name是你要创建的项目名字,懂得都懂。

nest new project-name 
  • 初始化后的目录结构
├── README.md
├── nest-cli.json
├── package.json       
├── src
│   ├── app.controller.spec.ts  // 控制器测试
│   ├── app.controller.ts       // 控制器
│   ├── app.module.ts           // 模块
│   ├── app.service.ts          // 服务
│   └── main.ts                 // 入口文件
├── test
│   ├── app.e2e-spec.ts
│   └── jest-e2e.json
├── tsconfig.build.json
├── tsconfig.json
└── yarn.lock
  • 初始化完成以后,会问你选择哪个工具进行安装依赖,我直接选择的npm,然后等待安装好以后进入目录。
cd project-name 

运行项目

  • 如果你没有安装依赖包就自己 npm i 重新安装一次,如果已经有依赖包就运行以下命令。
npm run start:dev

基本概念

nestjs的请求### 生命周期

1. 收到请求

2. 全局绑定的中间件
3. 模块绑定的中间件

4. 全局守卫
5. 控制层守卫
6. 路由守卫

7. 全局拦截器(控制器之前)
8. 控制器层拦截器 (控制器之前)
9. 路由拦截器 (控制器之前)

10. 全局管道
11. 控制器管道
12. 路由管道
13. 路由参数管道

14. 控制器(方法处理器) 

15. 服务(如果有)

16. 路由拦截器(请求之后)
17. 控制器拦截器 (请求之后)
18. 全局拦截器 (请求之后)

19. 异常过滤器 (路由,之后是控制器,之后是全局)

20. 服务器响应

常用命令

查看所有命令

  • 使用 Nest CLI 可以快速帮助我们新建相应的文件 在终端输入 nest -h name | alias | description | | ------------- | ----------- | -------------------------------------------- | | application | application | Generate a new application workspace | | class | cl | Generate a new class | | configuration | config | Generate a CLI configuration file | | controller | co | Generate a controller declaration | | decorator | d | Generate a custom decorator | | filter | f | Generate a filter declaration | | gateway | ga | Generate a gateway declaration | | guard | gu | Generate a guard declaration | | interceptor | in | Generate an interceptor declaration | | interface | interface | Generate an interface | | middleware | mi | Generate a middleware declaration | | module | mo | Generate a module declaration | | pipe | pi | Generate a pipe declaration | | provider | pr | Generate a provider declaration | | resolver | r | Generate a GraphQL resolver declaration | | service | s | Generate a service declaration | | library | lib | Generate a new library within a monorepo | | sub-app | app | Generate a new application within a monorepo | | resource | res | Generate a new CRUD resource |

CRUD套餐

  • 我个人不是很喜欢带测试文件,自己写的东西啥玩意自己心里明白,所以后面加了 --no-spec,要带测试文件的就可以不加
nest g resource users --no-spec
  • 如果你不想用上面的CURD,想单独创建常用文件
nest g mo modules/article # 创建模块 
nest g s modules/article # 创建服务 
nest g co modules/article # 创建控制器
  • Nest CLI 会帮我们自动在 article.module 引入 article.controller 和 article.service,并在 app.module 引入 article.module

参考文档链接