NestJS
NestJS 是一个基于 TypeScript 的后端框架,底层支持 Express 或 Fastify。对前端转后端的工程师友好——装饰器、依赖注入、模块化这些概念和 Angular 一脉相承,写惯 React 的看 NestJS 不会有太大违和感。
核心概念
模块(Module)
typescript
@Module({
imports: [TypeOrmModule.forRoot(...)],
controllers: [BookController],
providers: [BookService],
})
export class AppModule {}模块是 NestJS 的组织单元,相当于一个功能域。一个应用至少有一个根模块。
控制器(Controller)
typescript
@Controller('book')
export class BookController {
@Get()
findAll() { return this.bookService.findAll(); }
@Post()
create(@Body() dto: CreateBookDto) { return this.bookService.create(dto); }
}装饰器 @Get()/@Post()/@Put()/@Delete() 定义路由,@Body()/@Param()/@Query() 提取请求参数。
服务(Provider)
typescript
@Injectable()
export class BookService {
constructor(@InjectRepository(Book) private repo: Repository<Book>) {}
findAll() { return this.repo.find(); }
create(dto: CreateBookDto) { return this.repo.save(dto); }
}@Injectable() 让类可被 DI 容器管理。通过构造函数注入依赖。
TypeORM 集成
typescript
// Entity
@Entity()
export class Book {
@PrimaryGeneratedColumn() id: number;
@Column() title: string;
@Column() author: string;
}
// Module
TypeOrmModule.forRoot({
type: 'mysql',
host: 'localhost',
database: 'book',
entities: [Book],
synchronize: true,
}),
TypeOrmModule.forFeature([Book]),与 AI 开发的结合点
NestJS 在 AI Agent 开发中承担后端服务层的角色:
- 提供 RESTful API 给前端 AI 交互界面
- 管理数据库连接(MySQL/PostgreSQL)
- 调度中间件(Milvus 向量检索、Redis 缓存)
- LangChain 集成(
@langchain/openai在 NestJS 服务中调用)
典型 AI 应用的 NestJS 项目结构:
src/
├── ai/
│ ├── ai.controller.ts # AI 对话接口
│ ├── ai.service.ts # LangChain/LangGraph 调用
│ └── ai.module.ts
├── book/ # 业务 CRUD
├── common/ # 守卫、拦截器、管道
└── main.tsDockerfile 打包
dockerfile
FROM node:24-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
FROM node:24-alpine
ENV NODE_ENV=production
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY --from=builder /app/dist ./dist
EXPOSE 3000
CMD ["node", "dist/main.js"]静态文件配置
json
// nest-cli.json
{
"compilerOptions": {
"assets": [{ "include": "../public/**/*", "outDir": "dist/public" }]
}
}public/ 目录默认不输出到 dist/,需显式声明。
常用命令
bash
nest new my-app # 新建项目
nest g res book --no-spec # 生成 CRUD 模块
nest build # 编译
npm run start:dev # 本地开发(hot reload)
node dist/main.js # 生产运行相关示例
examples/nest-dockerfile-test/— NestJS + Docker Compose 部署examples/nest-langchain/— NestJS 集成 LangChainexamples/advanced-rag/— NestJS 后端 + LangGraph RAG