Skip to content

架构概览

Lartrix 采用分层架构设计,将业务逻辑、数据访问和界面表现清晰分离。

系统架构图

┌─────────────────────────────────────────────────────────────┐
│                      Frontend (Trix)                       │
│                   Vue 3 + NaiveUI + vschema-ui             │
└─────────────────────────────────────────────────────────────┘

                            │ HTTP / JSON Schema

┌─────────────────────────────────────────────────────────────┐
│                      Lartrix Package                        │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐      │
│  │ Controllers  │  │   Schema     │  │   Models     │      │
│  │              │  │  Components  │  │              │      │
│  └──────────────┘  └──────────────┘  └──────────────┘      │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐      │
│  │   Actions    │  │   Services   │  │ Middleware   │      │
│  └──────────────┘  └──────────────┘  └──────────────┘      │
└─────────────────────────────────────────────────────────────┘

                            │ Eloquent

┌─────────────────────────────────────────────────────────────┐
│                    Laravel Framework                        │
│        Routing │ Auth │ Validation │ Cache │ Queue          │
└─────────────────────────────────────────────────────────────┘



┌─────────────────────────────────────────────────────────────┐
│                    Database / Storage                       │
└─────────────────────────────────────────────────────────────┘

核心组件

1. Schema 系统

Schema 系统是 Lartrix 的核心,它将 PHP 代码转换为前端可渲染的 JSON Schema。

php
// PHP 代码
Button::make('点击我')
    ->type('primary')
    ->on('click', SetAction::make('visible', true));

// 转换为 JSON
{
    "com": "NButton",
    "props": {
        "type": "primary"
    },
    "on": {
        "click": [{"action": "set", "name": "visible", "value": true}]
    }
}

2. CrudController

提供完整的 CRUD 基础实现,你只需配置模型和界面:

php
class PostController extends CrudController
{
    protected function getModelClass(): string
    {
        return Post::class;
    }
    
    // 自动生成 list/create/update/delete 接口
}

3. Action 系统

Action 是前端交互的抽象,支持链式调用:

  • SetAction: 设置状态
  • CallAction: 调用方法
  • FetchAction: HTTP 请求
  • IfAction: 条件判断

4. 权限系统

基于 Spatie Laravel Permission 的 RBAC 实现:

  • 多 Guard 支持
  • 动态权限分配
  • 菜单级权限控制

5. 模块系统

基于 nwidart/laravel-modules 的模块化开发:

  • 独立命名空间
  • 独立路由
  • 独立迁移
  • 热插拔模块

数据流

列表请求

1. 前端:GET /api/posts?action_type=list_ui
2. 后端:PostController@index
3. 检查:权限验证
4. 执行:listUi() 方法
5. 返回:JSON Schema
6. 前端:根据 Schema 渲染界面

数据请求

1. 前端:GET /api/posts?page=1
2. 后端:PostController@index
3. 检查:权限验证
4. 查询:应用搜索/过滤条件
5. 返回:分页数据
6. 前端:在表格中渲染数据

目录结构

lartrix/
├── src/
│   ├── Controllers/      # 基础控制器
│   ├── Models/          # 基础模型
│   ├── Schema/          # Schema 组件
│   │   ├── Components/  # UI 组件
│   │   └── Actions/     # Action 类型
│   ├── Services/        # 业务服务
│   └── Traits/          # 可复用 Traits
├── config/              # 配置文件
├── database/            # 迁移与 Seeders
└── routes/              # 路由

扩展点

  1. 自定义控制器:继承 CrudController
  2. 自定义组件:继承 Component 基类
  3. 自定义 Actions:实现 Action 接口
  4. 自定义模块:创建独立模块
  5. 自定义 Guard:添加二级后台系统

基于 MIT 许可发布