Skip to content

NestJS

v10.x
TypeScript

概述

NestJS 是一个用于构建高效、可扩展的服务器端应用程序的渐进式 Node.js 框架。它使用现代 JavaScript,完全支持 TypeScript,并结合了 OOP(面向对象编程)、FP(函数式编程)和 FRP(函数响应式编程)的元素。

为什么选择 NestJS?
  • 企业级架构:模块化设计,易于维护和扩展
  • TypeScript 原生:完整的类型支持,开发体验优秀
  • 丰富的生态:与 Express/Fastify 无缝集成
  • 内置最佳实践:依赖注入、装饰器、管道、守卫等

技术特性

特性说明
编程语言TypeScript (100%)
架构模式MVC / 模块化 / 依赖注入
ORM 支持Prisma (推荐), TypeORM, Drizzle
数据库PostgreSQL, MySQL, SQLite
性能评分★★★★☆
学习曲线中等(需要理解装饰器和 DI)
API 文档Swagger / OpenAPI 自动生成
测试支持Jest 内置

生成的项目结构

ThesisAI 生成的 NestJS 项目遵循官方推荐的模块化结构:

backend
src
common // 公共模块
decorators // 自定义装饰器
filters // 异常过滤器
guards // 路由守卫
interceptors // 拦截器
pipes // 管道
config // 配置模块
configuration.ts // 环境配置
modules // 业务模块
auth // 认证模块(可选)
auth.module.ts
auth.service.ts
auth.controller.ts
strategies // Passport 策略
user // 用户模块
user.module.ts
user.service.ts
user.controller.ts
dto // 数据传输对象
[业务模块] // 根据需求生成
prisma // Prisma 相关
prisma.module.ts
prisma.service.ts
app.module.ts // 根模块
main.ts // 入口文件
prisma
schema.prisma // 数据库 Schema
seed.ts // 种子数据
test // 测试文件
.env.example // 环境变量示例
Dockerfile // Docker 配置
docker-compose.yml // Docker Compose
package.json

可用模块

NestJS 后端支持以下可选模块:

模块说明依赖
Prisma Prisma类型安全的数据库 ORM-
JWT 认证基于 JSON Web Token 的认证Prisma
文件上传本地/S3 文件存储-

开发环境

环境要求

依赖版本要求说明
Node.js>= 18.0推荐 LTS 版本
pnpm>= 8.0包管理器
数据库-SQLite 无需安装,MySQL/PostgreSQL 需独立服务

安装依赖

bash
        $
        cd backend && pnpm install
      

环境变量

创建 .env 文件并配置以下变量:

变量名说明必填
DATABASE_URL
默认值: file:./dev.db (SQLite)
数据库连接字符串
JWT_SECRET
默认值: your-secret-key
JWT 签名密钥
JWT_EXPIRES_IN
默认值: 7d
JWT 过期时间
PORT
默认值: 3000
服务端口
CORS_ORIGIN
默认值: *
CORS 允许的源

数据库连接字符串示例

.env

数据库迁移

首次运行或 schema 变更后,执行迁移:

bash
        $
        pnpm prisma migrate dev --name init
      

启动开发服务器

bash
        $
        pnpm run start:dev
      
服务启动成功
  • API 地址: http://localhost:3000
  • Swagger 文档: http://localhost:3000/api
  • Prisma Studio: 执行 pnpm prisma studio 打开数据库管理界面

代码示例

Controller 示例

user.controller.ts

Service 示例

user.service.ts

部署

Docker 部署

bash
        $
        docker build -t backend .
      
bash
        $
        docker run -p 3000:3000 --env-file .env backend
      

生产构建

bash
        $
        pnpm run build
      
bash
        $
        pnpm run start:prod
      
生产环境注意事项
  1. 确保 JWT_SECRET 使用强随机字符串
  2. 配置合适的 CORS_ORIGIN
  3. 使用 PostgreSQL 或 MySQL 替代 SQLite
  4. 启用 HTTPS

常见问题

Q: 如何添加新的业务模块?

使用 NestJS CLI 快速生成:

bash
        $
        npx nest g resource modules/product
      

Q: 如何处理跨域问题?

main.ts 中已配置 CORS,可通过 CORS_ORIGIN 环境变量控制允许的源。

Q: 如何自定义 Swagger 文档?

在 Controller 和 DTO 中使用 @Api* 装饰器添加描述。

相关资源

Released under the MIT License.