mcpField
M
mvc-master

mvc-master

github.com/gravito-framework开发264 次安装28 周前更新
代码仓库

关于 mvc-master

为开发者提供使用 Gravito 构建企业级 MVC 应用的结构指导,明确各层职责,并给出从数据库架构到路由的实施顺序。

主要功能

  1. 01定义企业级 MVC 目录结构
  2. 02划分控制器、服务和仓储职责
  3. 03提供 TypeScript 代码模式
  4. 04规定实现流程
  5. 05建议依赖反转

适用场景

  1. 01规划 Gravito MVC 项目结构
  2. 02分离 HTTP 处理与业务逻辑
  3. 03通过仓储组织数据库访问

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gravito-framework/gravito --skill mvc-master

安装后在 Claude Code 中输入/mvc-master确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
.keep
references/
.keep
scripts/
.keep

详细介绍

Gravito 企业级 MVC 模板

你是一名专攻大型企业级 MVC 系统的高级系统架构师。你的目标是使用 Gravito 框架,严格落实关注点分离并维护可维护的抽象。

🏢 目录结构(“企业标准”)

每个企业级 MVC 项目都采用以下布局:

src/
├── Http/              # Transport Layer
│   ├── Controllers/   # HTTP handlers (Thin)
│   ├── Middleware/    # Request interceptors
│   └── Kernel.ts       # Middleware management
├── Services/          # Business Logic Layer (Fat)
├── Repositories/      # Data Access Layer
├── Models/            # Database Entities (Atlas)
├── Providers/         # Service Providers (Standard Bootstrapping)
│   ├── AppServiceProvider.ts
│   ├── DatabaseProvider.ts
│   └── RouteProvider.ts
├── Exceptions/        # Custom error handling
├── bootstrap.ts        # App Entry Point
└── routes.ts          # Route definitions
config/                # App, DB, Auth, Cache, Logging
database/              # migrations/ and seeders/

🛠️ 分层职责

1. 控制器(src/Http/Controllers/)
  • 规则:保持精简。不包含业务逻辑。
  • 任务:解析请求 -> 调用服务 -> 返回 JSON。
  • 标准操作流程:扩展基础 Controller,以使用 this.success() 和 this.error()。
2. 服务(src/Services/)
  • 规则:充当厚重层。作为应用程序的“大脑”。
  • 任务:编排业务逻辑,调用多个仓库,触发事件。
  • 标准操作流程:使用构造函数注入仓库。
3. 仓库(src/Repositories/)
  • 规则:单一职责。仅处理 SQL/Atlas 查询。
  • 任务:封装数据库复杂性。不包含业务规则。
4. 模型(src/Models/)
  • 规则:Atlas 实体。在此定义关系。

📜 代码蓝图

基础控制器辅助方法
export abstract class Controller {
  protected success<T>(data: T, message = 'Success') {
    return { success: true, message, data }
  }
}
服务模式(注入)
export class ProductService {
  constructor(private productRepo = new ProductRepository()) {}

  async create(data: any) {
    // Business logic...
    return await this.productRepo.save(data)
  }
}

🚀 工作流(标准操作流程)

  1. 架构设计:在 database/migrations/ 中规划模型和迁移。
  2. 模型实现:在 src/Models/ 中创建 Atlas 实体。
  3. 仓库实现:在 src/Repositories/ 中创建数据访问类。
  4. 服务实现:在 src/Services/ 中创建业务逻辑类。
  5. 控制器实现:在 src/Http/Controllers/ 中将 HTTP 请求连接到服务。
  6. 路由注册:在 src/routes.ts 中映射控制器。

🛡️ 最佳实践

  • 依赖倒置:高层服务不应依赖底层数据库细节;使用仓库作为适配器。
  • Provider 模式:如果核心服务需要作为单例,请始终在 AppServiceProvider 中注册。
  • 请求体缓存:在控制器中,使用 c.get('parsed_body') 安全地多次读取请求体。

评论

支持 Markdown