在 NestJS 项目中,复用逻辑的放置位置 取决于这段处理的性质(纯工具函数还是包含业务逻辑/依赖)、使用范围(单个模块内还是多个模块),以及是否需要依赖注入(DI)。
下面按场景从简单到复杂给你推荐最佳实践(符合 NestJS 官方和社区主流做法):
1. 只在一个接口(或单个 Controller)中使用,逻辑比较简单
- 推荐位置:直接在当前 Controller 的同目录下创建一个 helper 文件(或 utils 文件),写成普通纯函数。
- 示例结构:
src/users/
├── users.controller.ts
├── users.service.ts
└── helpers/ # 或直接放 utils.ts
└── process-data.helper.ts process-data.helper.ts示例:export function processSomeData(data: any): any {
// 你的复用逻辑
return transformedData;
}- 在 Controller 中直接
import { processSomeData } from './helpers/process-data.helper';使用。
- 示例结构:
优点:简单、零开销,不需要注册为 Provider。
缺点:无法方便地注入其他 Service/Config 等。