2025-09-21 21:29:28 +08:00
|
|
|
|
# 🏗️ 三大框架原则对比与统一标准
|
|
|
|
|
|
|
|
|
|
|
|
## 📋 概述
|
|
|
|
|
|
|
|
|
|
|
|
本文档为AI开发者提供NestJS、ThinkPHP、Spring Boot三大框架的详细对比,包含功能映射、开发规范、命名约定和目录结构对比,确保AI能够更好地理解和开发功能。
|
|
|
|
|
|
|
|
|
|
|
|
**重要原则:既要尊重 NestJS 框架特性,又要与 PHP 项目业务逻辑保持一致**
|
|
|
|
|
|
|
|
|
|
|
|
## 🔄 核心功能映射
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 基础架构对比
|
|
|
|
|
|
|
|
|
|
|
|
| 功能模块 | ThinkPHP | NestJS | Spring Boot | 对应关系 | 实现方式 |
|
|
|
|
|
|
|---------|----------|---------|-------------|----------|----------|
|
|
|
|
|
|
| **路由系统** | `Route::get()` | `@Get()` | `@GetMapping()` | ✅ 直接对应 | 装饰器路由 |
|
|
|
|
|
|
| **控制器** | `Controller` | `@Controller()` | `@RestController` | ✅ 直接对应 | 装饰器控制器 |
|
|
|
|
|
|
| **中间件** | `Middleware` | `@UseGuards()` | `@Component` | ✅ 功能对应 | 守卫/拦截器 |
|
|
|
|
|
|
| **依赖注入** | `Container::get()` | `constructor()` | `@Autowired` | ✅ 更强大 | 自动注入 |
|
|
|
|
|
|
| **数据验证** | `Validate` | `@UsePipes()` | `@Valid` | ✅ 功能对应 | 验证管道 |
|
|
|
|
|
|
| **异常处理** | `Exception` | `@UseFilters()` | `@ExceptionHandler` | ✅ 功能对应 | 异常过滤器 |
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 数据库操作对比
|
|
|
|
|
|
|
|
|
|
|
|
| 功能模块 | ThinkPHP | NestJS | Spring Boot | 对应关系 | 实现方式 |
|
|
|
|
|
|
|---------|----------|---------|-------------|----------|----------|
|
|
|
|
|
|
| **模型定义** | `Model` | `@Entity()` | `@Entity` | ✅ 功能对应 | TypeORM/JPA 实体 |
|
|
|
|
|
|
| **查询构建** | `Db::table()` | `Repository` | `JpaRepository` | ✅ 功能对应 | TypeORM/JPA 仓库 |
|
|
|
|
|
|
| **关联关系** | `hasMany()` | `@OneToMany()` | `@OneToMany` | ✅ 功能对应 | ORM 关联 |
|
|
|
|
|
|
| **事务处理** | `Db::startTrans()` | `@Transaction()` | `@Transactional` | ✅ 功能对应 | 声明式事务 |
|
|
|
|
|
|
| **软删除** | `SoftDelete` | `@DeleteDateColumn()` | `@SQLDelete` | ✅ 功能对应 | ORM 软删除 |
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 缓存和会话
|
|
|
|
|
|
|
|
|
|
|
|
| 功能模块 | ThinkPHP | NestJS | Spring Boot | 对应关系 | 实现方式 |
|
|
|
|
|
|
|---------|----------|---------|-------------|----------|----------|
|
|
|
|
|
|
| **缓存管理** | `Cache::get()` | `@Inject(CACHE_MANAGER)` | `@Cacheable` | ✅ 功能对应 | Cache Manager |
|
|
|
|
|
|
| **会话管理** | `Session` | `@Session()` | `HttpSession` | ✅ 功能对应 | Session 装饰器 |
|
|
|
|
|
|
| **Redis 集成** | `Redis::get()` | `@InjectRedis()` | `@Autowired RedisTemplate` | ✅ 功能对应 | Redis 模块 |
|
|
|
|
|
|
|
|
|
|
|
|
## 🏗️ 目录结构对比
|
|
|
|
|
|
|
|
|
|
|
|
### ThinkPHP 目录结构
|
|
|
|
|
|
```
|
|
|
|
|
|
thinkphp/
|
|
|
|
|
|
├── app/ # 应用目录
|
|
|
|
|
|
│ ├── controller/ # 控制器
|
|
|
|
|
|
│ ├── model/ # 模型
|
|
|
|
|
|
│ ├── service/ # 服务层
|
|
|
|
|
|
│ └── middleware/ # 中间件
|
|
|
|
|
|
├── config/ # 配置文件
|
|
|
|
|
|
├── public/ # 公共资源
|
|
|
|
|
|
├── route/ # 路由定义
|
|
|
|
|
|
└── vendor/ # 第三方包
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### Spring Boot 目录结构
|
|
|
|
|
|
```
|
|
|
|
|
|
spring-boot/
|
|
|
|
|
|
├── src/main/java/
|
|
|
|
|
|
│ ├── controller/ # 控制器层
|
|
|
|
|
|
│ ├── service/ # 服务层
|
|
|
|
|
|
│ ├── repository/ # 数据访问层
|
|
|
|
|
|
│ ├── entity/ # 实体层
|
|
|
|
|
|
│ ├── dto/ # 数据传输对象
|
|
|
|
|
|
│ └── config/ # 配置类
|
|
|
|
|
|
├── src/main/resources/
|
|
|
|
|
|
│ ├── application.yml # 配置文件
|
|
|
|
|
|
│ └── static/ # 静态资源
|
|
|
|
|
|
└── pom.xml # 依赖管理
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### NestJS 目录结构
|
|
|
|
|
|
```
|
|
|
|
|
|
wwjcloud/
|
|
|
|
|
|
├── src/ # 源代码目录
|
|
|
|
|
|
│ ├── common/ # 通用服务层 (对应 ThinkPHP app/)
|
|
|
|
|
|
│ │ ├── auth/ # 认证授权模块
|
|
|
|
|
|
│ │ ├── member/ # 会员管理模块
|
|
|
|
|
|
│ │ ├── sys/ # 系统管理模块
|
|
|
|
|
|
│ │ ├── site/ # 站点管理模块
|
|
|
|
|
|
│ │ ├── addon/ # 插件管理模块
|
|
|
|
|
|
│ │ ├── upload/ # 文件上传模块
|
|
|
|
|
|
│ │ └── ... # 其他业务模块
|
|
|
|
|
|
│ ├── config/ # 配置管理层 (对应 ThinkPHP config/)
|
|
|
|
|
|
│ │ ├── database/ # 数据库配置
|
|
|
|
|
|
│ │ ├── redis/ # Redis配置
|
|
|
|
|
|
│ │ ├── jwt/ # JWT配置
|
|
|
|
|
|
│ │ └── app/ # 应用配置
|
|
|
|
|
|
│ ├── core/ # 核心基础设施层 (对应 ThinkPHP 核心)
|
|
|
|
|
|
│ │ ├── base/ # 基础类
|
|
|
|
|
|
│ │ ├── database/ # 数据库核心
|
|
|
|
|
|
│ │ ├── security/ # 安全核心
|
|
|
|
|
|
│ │ └── interceptors/ # 拦截器
|
|
|
|
|
|
│ └── vendor/ # 第三方服务适配层 (对应 ThinkPHP vendor/)
|
|
|
|
|
|
│ ├── payment/ # 支付适配器
|
|
|
|
|
|
│ ├── storage/ # 存储适配器
|
|
|
|
|
|
│ └── sms/ # 短信适配器
|
|
|
|
|
|
├── public/ # 公共资源
|
|
|
|
|
|
└── package.json # 依赖管理
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 层级对应关系
|
|
|
|
|
|
|
|
|
|
|
|
| 层级 | ThinkPHP | Spring Boot | NestJS | 说明 |
|
|
|
|
|
|
|------|----------|-------------|---------|------|
|
|
|
|
|
|
| **应用层** | `app/` | `src/main/java/` | `src/common/` | 业务逻辑和通用服务 |
|
|
|
|
|
|
| **配置层** | `config/` | `src/main/resources/` | `src/config/` | 配置管理和环境变量 |
|
|
|
|
|
|
| **核心层** | 框架核心 | Spring框架 | `src/core/` | 基础设施和核心功能 |
|
|
|
|
|
|
| **适配层** | `vendor/` | 第三方依赖 | `src/vendor/` | 第三方服务集成 |
|
|
|
|
|
|
|
|
|
|
|
|
## 📝 命名规范对比
|
|
|
|
|
|
|
|
|
|
|
|
### 1. PHP (ThinkPHP) 实际命名规范
|
|
|
|
|
|
|
|
|
|
|
|
基于对 `niucloud-php` 项目的实际分析:
|
|
|
|
|
|
|
|
|
|
|
|
| 文件类型 | 命名规范 | 实际示例 | 说明 |
|
|
|
|
|
|
|---------|----------|----------|------|
|
|
|
|
|
|
| **控制器** | `PascalCase.php` | `User.php`, `Order.php` | 无Controller后缀 |
|
|
|
|
|
|
| **模型** | `PascalCase.php` | `SysUser.php`, `MemberLevel.php` | 直接使用业务名称 |
|
|
|
|
|
|
| **验证器** | `PascalCase.php` | `User.php`, `Member.php` | 无Validate后缀 |
|
|
|
|
|
|
| **服务** | `PascalCase.php` | `UserService.php`, `OrderService.php` | 有Service后缀 |
|
|
|
|
|
|
| **目录** | `snake_case` | `adminapi/`, `validate/`, `model/` | 小写下划线 |
|
|
|
|
|
|
|
|
|
|
|
|
### 2. Java (Spring Boot) 标准命名规范
|
|
|
|
|
|
|
|
|
|
|
|
| 文件类型 | 命名规范 | 标准示例 | 说明 |
|
|
|
|
|
|
|---------|----------|----------|------|
|
|
|
|
|
|
| **控制器** | `PascalCase + Controller.java` | `UserController.java`, `OrderController.java` | 有Controller后缀 |
|
|
|
|
|
|
| **实体** | `PascalCase.java` | `User.java`, `Order.java` | 直接使用业务名称 |
|
|
|
|
|
|
| **服务** | `PascalCase + Service.java` | `UserService.java`, `OrderService.java` | 有Service后缀 |
|
|
|
|
|
|
| **DTO** | `PascalCase + Dto.java` | `CreateUserDto.java`, `UserResponseDto.java` | 有Dto后缀 |
|
|
|
|
|
|
| **仓储** | `PascalCase + Repository.java` | `UserRepository.java` | 有Repository后缀 |
|
|
|
|
|
|
| **目录** | `camelCase` | `controller/`, `service/`, `dto/` | 驼峰命名 |
|
|
|
|
|
|
|
|
|
|
|
|
### 3. NestJS 框架标准命名规范
|
|
|
|
|
|
|
|
|
|
|
|
| 文件类型 | 命名规范 | 标准示例 | 说明 |
|
|
|
|
|
|
|---------|----------|----------|------|
|
2025-09-27 03:28:46 +08:00
|
|
|
|
| **控制器** | `camelCaseController.ts` | `userController.ts`, `userProfileController.ts` | camelCase + 后缀 |
|
2025-09-21 21:29:28 +08:00
|
|
|
|
| **实体** | `camelCase.entity.ts` | `userEntity.ts`, `sysUser.entity.ts` | camelCase + 后缀 |
|
|
|
|
|
|
| **服务** | `camelCase.service.ts` | `userService.ts`, `userProfileService.ts` | camelCase + 后缀 |
|
|
|
|
|
|
| **DTO** | `camelCase.dto.ts` | `createUser.dto.ts`, `updateUser.dto.ts` | camelCase + 后缀 |
|
|
|
|
|
|
| **模块** | `camelCase.module.ts` | `userModule.ts`, `adminModule.ts` | camelCase + 后缀 |
|
|
|
|
|
|
| **目录** | `camelCase` | `controllers/`, `services/`, `dto/` | camelCase 目录 |
|
|
|
|
|
|
|
|
|
|
|
|
**重要说明**:
|
|
|
|
|
|
- **文件名**:使用 `camelCase.suffix.ts` 格式(本项目统一规范)
|
|
|
|
|
|
- **类名**:使用 `PascalCase` 格式(TypeScript标准)
|
2025-09-27 03:28:46 +08:00
|
|
|
|
- **示例**:文件 `userController.ts` 导出类 `UserController`
|
2025-09-21 21:29:28 +08:00
|
|
|
|
|
|
|
|
|
|
## 🎯 统一命名标准(最终规范)
|
|
|
|
|
|
|
|
|
|
|
|
### 核心原则
|
|
|
|
|
|
1. **业务对齐优先**: 业务逻辑命名与PHP项目保持一致
|
|
|
|
|
|
2. **框架规范遵循**: NestJS特有文件类型按NestJS规范
|
|
|
|
|
|
3. **可读性保证**: 确保命名清晰、语义明确
|
|
|
|
|
|
|
|
|
|
|
|
### 文件命名规范(最终版)
|
|
|
|
|
|
|
|
|
|
|
|
#### 实体文件命名
|
|
|
|
|
|
- **规范**: `{PHP模型名首字母小写}.entity.ts`
|
|
|
|
|
|
- **对应关系**: 与PHP模型文件一一对应,但使用PascalCase命名
|
|
|
|
|
|
- **示例**:
|
|
|
|
|
|
- PHP `SysUser.php` → NestJS `SysUser.entity.ts`
|
|
|
|
|
|
- PHP `SysConfig.php` → NestJS `SysConfig.entity.ts`
|
|
|
|
|
|
- PHP `MemberLevel.php` → NestJS `MemberLevel.entity.ts`
|
|
|
|
|
|
|
|
|
|
|
|
#### 控制器文件命名
|
2025-09-27 03:28:46 +08:00
|
|
|
|
- **规范**: `{模块名}Controller.ts` (NestJS 标准,使用camelCase)
|
|
|
|
|
|
- **示例**: `userController.ts`, `orderController.ts`, `adminController.ts`
|
2025-09-21 21:29:28 +08:00
|
|
|
|
|
|
|
|
|
|
#### 服务文件命名
|
|
|
|
|
|
- **规范**: `{模块名}.service.ts` (NestJS 标准,使用PascalCase)
|
|
|
|
|
|
- **示例**: `User.service.ts`, `Order.service.ts`, `Admin.service.ts`
|
|
|
|
|
|
|
|
|
|
|
|
#### DTO文件命名
|
|
|
|
|
|
- **规范**: `{操作动词}{模块名}Dto.ts` (项目实际使用格式)
|
|
|
|
|
|
- **示例**: `CreateUserDto.ts`, `UpdateUserDto.ts`, `QueryAdminDto.ts`
|
|
|
|
|
|
|
|
|
|
|
|
#### 验证器文件命名
|
|
|
|
|
|
- **规范**: `{模块名}.validator.ts` (区别于PHP无后缀)
|
|
|
|
|
|
- **示例**: `user.validator.ts`, `member.validator.ts`
|
|
|
|
|
|
|
|
|
|
|
|
#### 模块文件命名
|
|
|
|
|
|
- **规范**: `{模块名}.module.ts` (NestJS 标准)
|
|
|
|
|
|
- **示例**: `user.module.ts`, `admin.module.ts`, `auth.module.ts`
|
|
|
|
|
|
|
|
|
|
|
|
### 类命名规范(最终版)
|
|
|
|
|
|
|
|
|
|
|
|
#### 实体类命名
|
|
|
|
|
|
- **规范**: `PascalCase` (与PHP模型名保持一致)
|
|
|
|
|
|
- **示例**: `SysUser`, `SysConfig`, `MemberLevel`
|
|
|
|
|
|
|
|
|
|
|
|
#### 控制器类命名
|
|
|
|
|
|
- **规范**: `PascalCase + Controller`
|
|
|
|
|
|
- **示例**: `UserController`, `AdminController`, `AuthController`
|
|
|
|
|
|
|
|
|
|
|
|
#### 服务类命名
|
|
|
|
|
|
- **规范**: `PascalCase + Service`
|
|
|
|
|
|
- **示例**: `UserService`, `OrderService`, `AdminService`
|
|
|
|
|
|
|
|
|
|
|
|
#### DTO类命名
|
|
|
|
|
|
- **规范**: `PascalCase + Dto`
|
|
|
|
|
|
- **示例**: `CreateUserDto`, `UpdateUserDto`, `QueryAdminDto`
|
|
|
|
|
|
|
|
|
|
|
|
### 方法命名规范(最终版)
|
|
|
|
|
|
|
|
|
|
|
|
#### 业务逻辑方法
|
|
|
|
|
|
**优先与 PHP 项目保持一致,NestJS 特有方法按 NestJS 规范:**
|
|
|
|
|
|
|
|
|
|
|
|
- **CRUD 方法**: 与 PHP 项目方法名保持一致
|
|
|
|
|
|
- **查询方法**: 与 PHP 项目方法名保持一致
|
|
|
|
|
|
- **业务方法**: 与 PHP 项目方法名保持一致
|
|
|
|
|
|
- **NestJS 生命周期方法**: 按 NestJS 规范,如 `onModuleInit()`, `onApplicationBootstrap()`
|
|
|
|
|
|
|
|
|
|
|
|
#### 变量命名规范
|
|
|
|
|
|
**业务变量优先与 PHP 项目保持一致,NestJS 特有变量按 NestJS 规范:**
|
|
|
|
|
|
|
|
|
|
|
|
- **业务变量**: 与 PHP 项目变量名保持一致
|
|
|
|
|
|
- **业务常量**: 与 PHP 项目常量名保持一致
|
|
|
|
|
|
- **NestJS 注入变量**: 按 NestJS 规范,如 `private readonly userService: UserService`
|
|
|
|
|
|
- **TypeORM 相关变量**: 按 TypeORM 规范,如 `@InjectRepository(User)`
|
|
|
|
|
|
|
|
|
|
|
|
## 🔧 数据库命名规范
|
|
|
|
|
|
|
|
|
|
|
|
### 重要约束:与 PHP 项目共用数据库,必须保持命名一致
|
|
|
|
|
|
|
|
|
|
|
|
- **表名**: 与 PHP 项目完全一致,包括前缀和命名方式
|
|
|
|
|
|
- **字段名**: 与 PHP 项目完全一致,不能修改任何字段名
|
|
|
|
|
|
- **字段类型**: 与 PHP 项目完全一致,不能修改字段类型
|
|
|
|
|
|
- **索引结构**: 与 PHP 项目完全一致,不能添加或删除索引
|
|
|
|
|
|
|
|
|
|
|
|
**原则:看到 PHP 项目怎么命名,我们就怎么命名,保持 100% 一致**
|
|
|
|
|
|
|
|
|
|
|
|
## 🏗️ 模块目录结构规范
|
|
|
|
|
|
|
|
|
|
|
|
### 标准模块目录结构
|
|
|
|
|
|
```
|
|
|
|
|
|
src/common/{模块名}/
|
|
|
|
|
|
├── {模块名}.module.ts # 模块定义文件
|
|
|
|
|
|
├── controllers/ # 控制器目录
|
|
|
|
|
|
│ ├── adminapi/ # 管理端控制器目录(对应PHP adminapi/controller)
|
2025-09-27 03:28:46 +08:00
|
|
|
|
│ │ └── {模块名}Controller.ts
|
2025-09-21 21:29:28 +08:00
|
|
|
|
│ └── api/ # 前台控制器目录(对应PHP api/controller)
|
2025-09-27 03:28:46 +08:00
|
|
|
|
│ └── {模块名}Controller.ts
|
2025-09-21 21:29:28 +08:00
|
|
|
|
├── services/ # 服务目录
|
|
|
|
|
|
│ ├── admin/ # 管理端服务目录(对应PHP service/admin)
|
|
|
|
|
|
│ │ └── {模块名}.service.ts
|
|
|
|
|
|
│ ├── api/ # 前台服务目录(对应PHP service/api)
|
|
|
|
|
|
│ │ └── {模块名}.service.ts
|
|
|
|
|
|
│ └── core/ # 核心服务目录(对应PHP service/core)
|
|
|
|
|
|
│ └── {模块名}.service.ts
|
|
|
|
|
|
├── entity/ # 实体目录(对应PHP model)
|
|
|
|
|
|
│ ├── {实体名}.entity.ts # 实体文件(PascalCase.entity.ts格式)
|
|
|
|
|
|
│ └── {配置实体}.entity.ts # 配置实体文件
|
|
|
|
|
|
├── dto/ # DTO 目录(对应PHP validate)
|
|
|
|
|
|
│ ├── admin/ # 管理端DTO目录
|
|
|
|
|
|
│ │ ├── Create{模块名}Dto.ts
|
|
|
|
|
|
│ │ └── Update{模块名}Dto.ts
|
|
|
|
|
|
│ └── api/ # 前台DTO目录
|
|
|
|
|
|
│ ├── {操作}Dto.ts
|
|
|
|
|
|
│ └── {操作}Dto.ts
|
|
|
|
|
|
├── guards/ # 守卫目录(可选)
|
|
|
|
|
|
├── decorators/ # 装饰器目录(可选)
|
|
|
|
|
|
├── interfaces/ # 接口目录(可选)
|
|
|
|
|
|
└── enums/ # 枚举目录(可选)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 实际示例(基于auth模块)
|
|
|
|
|
|
```
|
|
|
|
|
|
src/common/auth/
|
|
|
|
|
|
├── auth.module.ts
|
|
|
|
|
|
├── controllers/
|
|
|
|
|
|
│ ├── adminapi/ # 管理端控制器目录
|
2025-09-27 03:28:46 +08:00
|
|
|
|
│ │ └── authController.ts
|
2025-09-21 21:29:28 +08:00
|
|
|
|
│ └── api/ # 前台控制器目录
|
2025-09-27 03:28:46 +08:00
|
|
|
|
│ └── authController.ts
|
2025-09-21 21:29:28 +08:00
|
|
|
|
├── services/
|
|
|
|
|
|
│ ├── admin/ # 管理端服务目录
|
|
|
|
|
|
│ │ └── Auth.service.ts
|
|
|
|
|
|
│ ├── api/ # 前台服务目录
|
|
|
|
|
|
│ │ └── Auth.service.ts
|
|
|
|
|
|
│ └── core/ # 核心服务目录
|
|
|
|
|
|
│ └── Auth.service.ts
|
|
|
|
|
|
├── entity/
|
|
|
|
|
|
│ └── AuthToken.entity.ts
|
|
|
|
|
|
├── dto/
|
|
|
|
|
|
│ ├── admin/ # 管理端DTO目录
|
|
|
|
|
|
│ │ ├── CreateAuthDto.ts
|
|
|
|
|
|
│ │ └── UpdateAuthDto.ts
|
|
|
|
|
|
│ └── api/ # 前台DTO目录
|
|
|
|
|
|
│ ├── LoginDto.ts
|
|
|
|
|
|
│ └── RegisterDto.ts
|
|
|
|
|
|
├── guards/
|
|
|
|
|
|
│ ├── GlobalAuthGuard.ts
|
|
|
|
|
|
│ ├── JwtAuthGuard.ts
|
|
|
|
|
|
│ └── RolesGuard.ts
|
|
|
|
|
|
├── decorators/
|
|
|
|
|
|
│ ├── RolesDecorator.ts
|
|
|
|
|
|
│ ├── public.decorator.ts
|
|
|
|
|
|
│ └── user-context.decorator.ts
|
|
|
|
|
|
└── interfaces/
|
|
|
|
|
|
└── user.interface.ts
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 🔄 模块间通信规范
|
|
|
|
|
|
|
|
|
|
|
|
### 模块依赖管理
|
|
|
|
|
|
|
|
|
|
|
|
## 🎯 框架特性对比
|
|
|
|
|
|
|
|
|
|
|
|
### 依赖注入对比
|
|
|
|
|
|
|
|
|
|
|
|
| 框架 | 实现方式 | 示例 |
|
|
|
|
|
|
|------|----------|------|
|
|
|
|
|
|
| **ThinkPHP** | 容器获取 | `Container::get('UserService')` |
|
|
|
|
|
|
| **Spring Boot** | 注解注入 | `@Autowired private UserService userService;` |
|
|
|
|
|
|
| **NestJS** | 构造函数注入 | `constructor(private userService: UserService) {}` |
|
|
|
|
|
|
|
|
|
|
|
|
### 装饰器对比
|
|
|
|
|
|
|
|
|
|
|
|
| 功能 | ThinkPHP | Spring Boot | NestJS |
|
|
|
|
|
|
|------|----------|-------------|---------|
|
|
|
|
|
|
| **路由** | `Route::get()` | `@GetMapping()` | `@Get()` |
|
|
|
|
|
|
| **验证** | `validate()` | `@Valid` | `@UsePipes()` |
|
|
|
|
|
|
| **事务** | `Db::startTrans()` | `@Transactional` | `@Transaction()` |
|
|
|
|
|
|
| **缓存** | `Cache::remember()` | `@Cacheable` | `@UseInterceptors()` |
|
|
|
|
|
|
|
|
|
|
|
|
## 📚 最佳实践
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 业务逻辑迁移原则
|
|
|
|
|
|
- 严格按照PHP项目的业务逻辑实现
|
|
|
|
|
|
- 保持API接口的输入输出格式一致
|
|
|
|
|
|
- 维护相同的数据验证规则
|
|
|
|
|
|
- 确保错误处理机制一致
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 框架特性使用原则
|
|
|
|
|
|
- 充分利用NestJS的依赖注入特性
|
|
|
|
|
|
- 使用装饰器简化代码编写
|
|
|
|
|
|
- 采用模块化设计提高代码可维护性
|
|
|
|
|
|
- 利用TypeScript的类型系统提高代码质量
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 性能优化原则
|
|
|
|
|
|
- 合理使用缓存机制
|
|
|
|
|
|
- 优化数据库查询
|
|
|
|
|
|
- 实现异步处理
|
|
|
|
|
|
- 采用批量操作减少数据库访问
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
**重要提醒**: 本文档是三框架对比的权威指南,AI开发者必须严格遵循这些原则,确保代码质量和规范一致性。
|