架构概览
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/ # 路由扩展点
- 自定义控制器:继承 CrudController
- 自定义组件:继承 Component 基类
- 自定义 Actions:实现 Action 接口
- 自定义模块:创建独立模块
- 自定义 Guard:添加二级后台系统