
Nest.js 实战 (十五):前后端分离项目部署的最佳实践
这篇文章介绍了如何部署一个采用现代前后端技术栈的分离架构项目到生产环境的最佳实践。文章以Nest.js后端和现代前端框架为例,详细描述了从安装依赖、配置数据库、上传代码到服务器,再到配置反向代理的过程。通过设置Node.js运行环境、上传前端文件并解压、配置HTTPS证书以及实现反向代理来转发API请求,最终确保前后端服务能够正常运行并被用户访问。同时,文章还提到了一些常见的部署问题及解决方法。

Nest.js 实战 (十四):如何获取客户端真实 IP
这篇文章介绍了在 Nest.js 应用中如何获取客户端的真实 IP 地址。当请求来自本地代理时,直接获取的 IP 地址可能不准确。为了解决这个问题,需要确保代理服务器设置正确的转发头(如 X-Forwarded-For 或 X-Real-IP),并在后端正确读取这些头信息。文章还提供了获取真实 IP 地址的方法,并展示了在登录接口中调用该方法的示例代码。

Nest.js 实战 (十三):实现 SSE 服务端主动向客户端推送消息
这篇文章介绍了如何在 Nest.js 应用中实现 Server-Sent Events(SSE)技术,用于服务端主动向客户端推送消息。文章以实时通信场景为例,讨论了选择 SSE 技术的原因,因其能满足高效推送和低延迟需求,且更适合服务器向客户端发送更新的场景。接着详细描述了如何通过 @Sse 装饰器和 Event Emitter 实现 SSE 功能,并展示了相关代码片段,包括创建 SSE 连接、监听事件以及处理消息推送的逻辑。

Nest.js 实战 (十二):优雅地使用事件发布/订阅模块 Event Emitter
这篇文章介绍了如何在 Nest.js 应用中优雅地使用事件发布/订阅模块 Event Emitter。EventEmitter 是一个基于强大库的社区模块,能够简化服务间的通信,使应用更健壮、灵活且易于扩展。文章详细讲解了安装依赖、初始化模块、发布事件以及订阅事件的具体步骤,并展示了在服务中注入 Event Emitter 并使用其方法完成事件的发布与监听的代码示例。

Nest.js 实战 (十一):配置热重载 HMR 给服务提提速
这篇文章介绍了如何在Nest.js项目中配置热重载(HMR)以提高开发效率。HMR可以减少每次修改文件后的编译时间,通过安装相关依赖和配置webpack-hmr.config.js文件,然后在主入口文件main.ts中加入相关代码来实现。文章还说明了如何在package.json中修改启动脚本以启用HMR。

Nest.js 实战 (十):使用 winston 打印和收集日志记录
这篇文章介绍了在Nest.js中使用winston进行日志记录的实战方法,说明了日志记录在后台服务的重要性,并详细讲解了如何使用Nest.js内置的Logger类和自定义日志记录器,以及如何通过依赖注入和日志中间件来管理和控制日志输出。

Nest.js 实战 (九):使用拦截器记录用户 CURD 操作日志
这篇文章介绍了如何在 Nest.js 中使用拦截器记录用户的 CURD 操作日志。通过实现 NestInterceptor 接口,拦截器可以在函数执行前后附加额外逻辑,如记录操作日志。文章还展示了如何定义日志模型(schema.prisma),包括日志的字段如操作类型、用户 ID、IP 地址等,并通过 OperationLogService 获取请求上下文以保存用户数据。

Nest.js 实战 (八):基于 JWT 的路由身份认证鉴权
这篇文章介绍了在Nest.js中如何基于JWT实现路由身份认证鉴权,详细说明了客户端使用用户名和密码认证后服务端签发JWT的过程,以及在模块中如何创建文件处理认证流程。

Nest.js 实战 (七):如何生成 SVG 图形验证码
这篇文章介绍了在 Nest.js 项目中实现生成 SVG 图形验证码的方法。首先通过安装相关依赖,在控制器中导入必要的模块并配置 Swagger 文档注解。接着定义了一个 `getCaptcha` 方法,利用 `svg-captcha` 库生成包含指定长度、字符样式和背景等参数的验证码图片,并通过会话(Session)存储验证码值以便后续登录验证。最后,在客户端登录时可以比对输入的验证码与会话中的值来判断其正确性。

Nest.js 实战 (六):使用 Session 在不同请求间存储信息
这篇文章介绍了如何在 Nest.js 中使用 Session 来实现跨请求的信息存储,通过 Express 的 `express-session` 中间件来管理用户会话。文章详细描述了如何配置 Session 参数如 `secret`、`resave` 和 `saveUninitialized`,并在代码中展示了如何通过 `@Req` 和 `@Session` 装饰器来获取和设置会话数据,同时提供了会话数据的增删改查示例,以及销毁会话的方法。

Nest.js 实战 (五):如何实现文件本地上传
这篇文章介绍了如何在Nest.js框架中实现文件本地上传的功能,涉及到了使用内置的基于中间件的模块处理文件上传,安装必要的包,并通过装饰器和拦截器来管理文件数据的接收和处理。

Nest.js 实战 (四):利用 Pipe 管道实现数据验证和转换
这篇文章介绍了在 Nest.js 中使用管道(Pipelines)进行数据验证和转换的实战方法,包括内置管道、自定义管道和管道测试,强调了管道在数据预处理、错误处理、一致性、可插拔性和重用性方面的作用,并列举了 Nest.js 自带的九个开箱即用的管道。