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

准备工作

环境情况

  • 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

参考文档链接