mirror of
https://gitee.com/zoujingli/ThinkAdmin.git
synced 2026-06-06 20:18:10 +08:00
补充 v8 重构后的架构文档、组件说明和迁移记录,方便后续维护者理解插件边界。 主要内容: - 更新根 README,说明 v8 插件分层、系统模块、交付命令和验证流程。 - 新增组件明细、插件边界、路由分发、软删除和稳定性文档。 - 记录 Storage 合并到 System、旧 View 移除和 Helper 并入 System 的决策。 - 补充文档注释报告和后续重构计划,便于持续演进。
3.6 KiB
3.6 KiB
Plugin-First Refactor
相关文档
目标
plugin/*作为主业务承载目录。app/*仅保留本地多应用和过渡代码。- 页面入口统一为
/{plugin}/...。 - 接口入口统一为
/api/{plugin}/{controller}/{action}。 - 路由分发优先命中插件,再命中本地应用,最后回退到默认本地应用。
_plugin与X-Plugin-App只保留为调试开关,默认关闭。
组件边界
ThinkLibrary
- 提供
Controller、Model、Plugin、Command等基础类型。 - 负责插件发现、元数据读取、URL 构建、运行时上下文与路由适配。
- 负责通用会话、JWT、RPC、Storage 门面与标准契约。
- 不承载后台壳层、守护进程与发布导出能力。
ThinkPlugsSystem
- 负责后台登录、首页、权限菜单、用户、系统配置、日志等后台壳层能力。
- 持有
system_auth、system_auth_node、system_menu、system_user。 - 持有
system_data、system_base、system_oplog。 - 承载存储中心能力,负责驱动注册、配置协议、上传授权、上传接口与文件管理。
- 提供
system/config/storage、system/file/*与/api/system/upload/*。 - 持有
system_file。 - 内置开发交付工具,统一使用
plugin\system\helper\*命名空间。 - 提供
xadmin:publish、xadmin:package、xadmin:helper:*。
ThinkPlugsWorker
- 负责 Workerman 常驻进程、HTTP 托管、队列调度与运行控制。
- 提供
xadmin:worker统一入口。 - 持有
system_queue。
业务插件
ThinkPlugsWechatClient、ThinkPlugsWechatService、ThinkPlugsPayment、ThinkPlugsWemall等只承载自己的业务模型、控制器和菜单。- 不再把公共基础能力回写到
app/*或extend/*。
当前状态
- 插件元数据统一收敛到
composer.json > extra.xadmin。 ThinkLibrary已支持插件优先分发、本地应用兼容和默认本地应用回退。ThinkPlugsSystem、ThinkPlugsWorker的共享表已明确归属;原独立 Storage 与 Helper 已合并到 System。- 旧的根级门面与历史兼容目录已逐步收缩到最小集合。
- 插件中心、存储中心、系统后台都已切换到插件化入口。
当前约定
插件注册
- 每个插件统一使用
src/Service.php作为服务入口。 - 服务类统一通过
composer.json > extra.think.services注册。 - 插件编码、前缀、菜单、迁移、说明文档统一写在
extra.xadmin。
运行时
- 页面链接优先使用
sysuri()。 - 标准接口链接优先使用
apiuri()。 - 根目录全局路由优先使用
Route::bindApp()、Route::bindPlugin()、Route::appGroup()、Route::pluginGroup()。 - 新代码不再依赖旧式三段路由推断目标应用。
共享表归属
system_auth、system_auth_node、system_menu、system_user归ThinkPlugsSystem。system_data、system_base、system_oplog归ThinkPlugsSystem。system_file归ThinkPlugsSystem存储中心。system_queue归ThinkPlugsWorker。
前端脚本变量
- 系统脚本统一下发
taSystem、taSystemApi、taStorage、taStorageApi、taApiPrefix。 - 插件模板、静态脚本、上传脚本和公开预览页都优先消费这组变量。
后续收尾
- 继续清理历史文档和模板中的旧路由示例。
- 持续补齐跨平台回归,覆盖 Windows 与 Linux。
- 新增插件时严格走
plugin-standard.md中的准入规则。