SuperAPI AI 工具集

fusecore

编程与开发

查看项目

更新于 10-26 16:21

技能介绍

用途

FuseCore 是一套用于 Laravel 13 的模块化单体应用架构。它把系统拆成多个自包含的功能模块(例如 User、Dashboard、Blog),用于在大型 Laravel 项目中组织代码、隔离功能边界,并配套提供 React 19 前端集成方案。资料主要面向在 FuseCore 项目中创建模块、理解其结构和实现功能的场景。

主要能力

  • 模块化组织:每个模块是独立文件夹,包含 App/Models、App/Http/Controllers、App/Services、App/Providers、Config、Database/Migrations、Resources/React、Routes/api.php 和 module.json。
  • 自动发现:通过每个模块的 module.json 自动注册模块,字段包括 name、version、enabled、isCore、dependencies,可选 cache_prefix。
  • 契约与 Trait:提供 ModuleInterface、ReactModuleInterface 契约,以及 HasModule(资源加载)、HasModuleDatabase 等 Trait;模块 ServiceProvider 使用 HasModule。
  • React 集成:每个模块可拥有隔离的 React 资源(Resources/React/),资料标注使用 React 19 + TypeScript 7 与 Inertia 3 作为桥接。
  • 多语言:支持 FR/EN/DE/IT/ES 多语言,i18n 文件位于 /Resources/React/i18n/locales/。
  • 模块级缓存前缀:可在 module.json 中通过 cache_prefix 为各模块配置缓存前缀。

使用方式

资料给出的关键约定:

  1. 所有代码放在 /FuseCore/{Module}/,不放在 /app/。
  2. 每个模块必须有 module.json 用于发现,并有使用 HasModule Trait 的 ServiceProvider。
  3. 路由放在模块的 /Routes/api.php,迁移放在模块的 /Database/Migrations/,接口放在 /App/Contracts/。
  4. 单个文件不得超过 FUSE_SOLID_MAX_LINES,超出需拆分。
  5. 建议每个模块的依赖通过契约声明,控制器不承载业务逻辑(提取到模块 Service)。

快速创建模块的示例命令与代码(来自资料):

mkdir -p FuseCore/{ModuleName}/{App/{Models,Http/Controllers,Services,Providers},Database/Migrations,Resources/React,Routes}
php artisan fusecore:cache-clear

module.json 示例:

{
    "name": "ModuleName",
    "version": "1.0.0",
    "enabled": true,
    "isCore": false,
    "dependencies": ["User"]
}

ServiceProvider 示例:

class ModuleNameServiceProvider extends ServiceProvider
{
    use HasModule;

    public function boot(): void
    {
        $this->loadModuleMigrations();
    }
}

路由示例:

Route::middleware(['api', 'auth:sanctum'])->group(function () {
    Route::apiResource('items', ItemController::class);
});

资料还描述了一个强制性的智能体工作流:在实现前并行启动三个智能体(explore-codebase 分析 /FuseCore/ 中已有模块、research-expert 通过 Context7 核对 Laravel 13 模式、laravel-expert 应用 Laravel 最佳实践),实现后运行 sniper 进行校验。

适用场景

  • 需要按功能边界拆分的大型 Laravel 13 项目。
  • 需要模块级隔离 React 前端的项目。
  • 需要多语言支持与模块级缓存管理的项目。

限制与注意事项

资料明确指出:Laravel 13(稳定 13.33)最低要求 PHP 8.3;L13 中在模型自身 boot 期间实例化模型会抛出 LogicException,因此绑定放在 register(),观察者与钩子放在 boot();模块间不得直接导入具体类,必须经由 Contract;迁移必须由各模块自行管理,不得共享。资料未提供安装命令、许可协议、收费方式或性能数据,这些内容暂未提供。