nestjs引篇
nestjs
Nestjs 是一个用于构建高效、可扩展的 Node.js 服务器端的框架。它的底层以前端常见的两个服务端框架:express和 Fastify 为基础。(默认express 可以换成Fastify)
官方网站:nestjs
nestjs cli
nesrtjs 提供了强大的命令行工具,用于创建、生成、编译、运行 Nest.js 应用程序。
nestjs 概念
- Controller --> 控制器 处理请求,返回响应
- Service --> 服务层 数据访问,核心逻辑
- Module --> 模块 组合所有逻辑代码,
- Pipe --> 管道 预处理数据,转换数据,核验请求数据
- Filter --> 过滤器 请求时的错误处理
- Guard --> 守卫 鉴权和认证
- Interceptor --> 拦截器 拦截请求和响应,加入特殊的逻辑
- Repository --> 仓库 数据访问,也就是对数据库的操作
nestjs运行周期
客户端 -> 中间件 -> 守卫 -> 前置拦截器 -> 管道 -> 控制器 -> 服务 -> 后置拦截器 -> 过滤器 -> 响应 -> 客户端
生命周期钩子
onModuleInit():当宿主模块的依赖项已解析完成时调用。onApplicationBootstrap():在所有模块初始化完成但尚未开始监听连接时调用。onModuleDestroy():在接收到终止信号(例如 SIGTERM)后调用。beforeApplicationShutdown():在所有 onModuleDestroy() 处理程序完成(Promise 已解决或拒绝)后调用;一旦完成(Promise 已解决或拒绝),所有现有连接将被关闭(调用了 app.close())。onApplicationShutdown():在连接关闭后调用(app.close() 解析完成时)。
nest-cli
nest-cli 是 nestjs 的命令行工具,用于创建、编译、运行 nestjs 项目。
命令行工具
- nest new
<项目名称>创建项目,名称需要符合命名规范用短横线连接命名,符合npm包命名规则。 - nest g
<生成类型><生成名称>创建文件,名称需要符合命名规范用短横线连接命名,符合npm包命名规则。 - nest --help 查看帮助,可以看到所有的nest-cli的相关命令,不妨在使用命令的时候查看一下帮助。
代码生成
| 命令 | 说明 | 示例 |
|---|---|---|
nest g controller <名称> | 生成控制器 | nest g controller users(创建 users 控制器) |
nest g service <名称> | 生成服务 | nest g service users(创建 users 服务) |
nest g module <名称> | 生成模块 | nest g module users(创建 users 模块) |
nest g class <名称> | 生成类 | nest g class user.entity(创建用户实体类) |
nest g interceptor <名称> | 生成拦截器 | nest g interceptor transform(创建转换拦截器) |
nest g filter <名称> | 生成过滤器 | nest g filter http-exception(创建异常过滤器) |
nest g guard <名称> | 生成守卫 | nest g guard auth(创建认证守卫) |
nest g pipe <名称> | 生成管道 | nest g pipe validation(创建验证管道) |
