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 项目。

命令行工具

  1. nest new <项目名称> 创建项目,名称需要符合命名规范用短横线连接命名,符合npm包命名规则。
  2. nest g <生成类型> <生成名称> 创建文件,名称需要符合命名规范用短横线连接命名,符合npm包命名规则。
  3. 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(创建验证管道)
相关推荐
ttwuai8 分钟前
Go 后台接入 CAS 单点登录后,原来的权限怎么继续生效?
开发语言·后端·golang
小蒜学长24 分钟前
springboot党建云课堂学习与管理系统(代码+数据库+LW)
java·数据库·spring boot·后端·学习
超级码里奥202425 分钟前
OpenClaw(龙虾[特殊字符])AI 智能体安装教程
windows·node.js
烂蜻蜓2 小时前
Flask入门教程(十二):表单处理——从基础到Flask-WTF完整实践
后端·python·flask
2601_962055979 小时前
跟据spring boot版本,查看对应的tomcat,并查看可支持的tomcat的版本范围
spring boot·后端·tomcat
Lost of 程序猿11 小时前
ASP.NET Core API 幂等性设计深度实战:从一次重复申领事故说起
后端·asp.net
QQ_216962909612 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端
郑州光合科技余经理13 小时前
本地生活服务系统:模块边界与结算字段怎么拆
java·开发语言·前端·后端·系统架构·uni-app·php
IT_陈寒13 小时前
Vue的嵌套组件竟然吃掉了我的事件?
前端·人工智能·后端
大辉狼_音频架构14 小时前
进阶:从源码编译 SOF 固件与 topology
后端