注册
|
登录
发帖
热搜
活动
交友
discuz
论坛
BBS
翼度工具
翼度网址导航
开发工具
Linux命令速查
网页设计配色表
在线制作icon
颜色代码选取器
翼度科技
»
论坛
›
编程开发
›
JavaScript
›
查看内容
返回列表
发新帖
NestJS 基础概念
等一等
等一等
当前离线
积分
9
3
主题
3
帖子
9
积分
新手上路
新手上路, 积分 9, 距离下一级还需 41 积分
新手上路, 积分 9, 距离下一级还需 41 积分
积分
9
发消息
显示全部楼层
1. Module
Module是NestJS 的基本组织单位。
模块系统基于 Node.js 的 CommonJS 模块系统,但提供了更高级别的抽象和组织方式。通过使用模块,你可以将应用程序拆分成多个独立且可复用的部分,每个模块都负责实现特定的功能或业务逻辑。
模块可以封装相关的代码、配置和依赖关系,使得模块内部的实现细节对外不可见,只暴露必要的接口和功能。
模块之间可以定义明确的依赖关系,通过导入(imports)其他模块来获取所需的功能和服务。这有助于管理复杂应用程序中的依赖关系,确保组件之间的正确交互。
可以使用 @Module() 装饰器来定义一个模块,并在装饰器的元数据中指定模块的提供者、控制器、导入的模块等。这样,NestJS 就可以根据这些信息来构建和管理应用程序的模块结构。
2.
Provider
Provider
是基于依赖注入的概念(Dependency Injection,简称DI)
是一种实现控制反转(Inversion of Control,简称IoC)的设计模式。
基本思想是解耦,通过外部框架,将类所依赖的对象(
Provider
)注入到类中,使得类在运行时动态地获取其所依赖的对象实例,从而实现松耦合。而不是硬编码方式直接关联在一起。
在 NestJS 中,你通常在模块的 @Module 装饰器的 providers 数组中注册提供者。这告诉 NestJS 该模块提供了哪些服务或值,并且这些提供者可以在该模块的作用域内被注入到其他类中。同时,如果你需要将提供者导出到其他模块使用,你可以在 exports 数组中指定它们。
可以通过装饰器(如 @Injectable())和构造函数参数来声明和注入依赖关系,NestJS 会在运行时自动解析这些依赖关系,并将相应的实例注入到类中。
3.
Middleware
Middleware实际上是一个函数,它可以在请求或响应对象上执行某些操作,或者在传递给下一个处理程序之前进行预处理。这些Middleware函数在请求的处理过程中,按照定义的顺序依次执行,形成了一个类似洋葱模型的层层包裹和处理的结构。
4. Guards(守卫):
通常用于身份验证、角色检查或权限验证。
是最先执行的中间件,用于确定是否允许请求继续处理。(在请求还没到控制器之前执行)
5. Interceptors (拦截器):
如果 Guards 允许请求继续,那么 Interceptors 会在 Pipes 和Controller方法之前执行。
主要功能为:
在方法执行前/后绑定额外的逻辑:
拦截器可以在Controller方法被调用之前或之后执行自定义代码。这允许你执行如日志记录等每个请求都需要执行的任务。
转换函数返回的结果:
你可以使用拦截器来修改从控制器方法返回的数据。例如,你可能希望转换数据的格式,或添加额外的元数据到响应中。
转换函数抛出的异常:
如果控制器方法抛出了异常,拦截器可以捕获这个异常,并根据需要转换它。这可以用于统一异常处理,例如将内部错误转换为更友好的用户错误信息。
扩展基本函数行为:
拦截器允许你在不修改原始控制器方法的情况下添加新的功能。这意味着你可以在不破坏现有代码的基础上,增强应用程序的功能。
根据特定条件完全覆盖一个函数:
有时,你可能想要根据某些条件(如缓存)完全替换控制器方法的默认行为。拦截器可以做到这一点,通过检查特定条件,并在满足这些条件时返回预定义的结果或执行不同的逻辑。
6. Pipes(管道):
主要用于对请求接口的入参进行验证和转换的前置操作。(每当一个请求被路由到具体的Controller方法后,会先通过管道对传入的请求参数进行转换和验证 )
7. Exception filters (异常过滤器):
用来处理应用程序中抛出的异常和错误的。
可以实现:
统一错误响应格式
自定义HTTP状态码
添加额外的响应信息
记录错误日志
来源:
https://www.cnblogs.com/xinfangzhang/p/18121157
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
上一篇:
手写bind
下一篇:
做AI运动小程序有哪些解决方案,如何进行选型?
发表于 2024-4-8 22:43:38
来自手机
举报
回复
使用道具
分享
返回列表
发新帖
本版积分规则
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
快速回复
快速回复
返回顶部
返回顶部
返回列表
返回列表