我们把后台框架拆成了两部分:一个基座,一堆插件
Atrman v1.0.5 发布,PHP 8.4 + Webman 常驻内存 + Vue3 qiankun 微前端的企业级插件化开发框架,MIT 开源。
Atrman v1.0.5 · PHP 8.4 + Webman 常驻内存 + Vue3 qiankun 微前端 · MIT 开源
起因
做企业后台的同志大概都熟这套流程:新项目到手,先花两周搭账号、权限、组织、菜单、配置、文件上传、消息通知。这些是每个项目都躲不掉的地基活。等终于要碰业务了,甲方说一句"这个功能后面以插件形式加进来就行"。
然后就开始还债。
插件写多了会绑死在框架的技术栈和目录结构里,改一处动全身;框架每升一次版,都得回头给存量插件做兼容;哪天想把某个模块换成 React,会发现换栈等于改框架;插件装得越多核心越脆,线上出问题连条干净的回滚路径都没有。
后来想明白,问题不在该不该用插件,而在插件和基座之间没有一个中立契约。没有契约,插件就只能长在框架的肉里。
Atrman 想解决的就是这个契约。
Atrman 是什么
一句话:一个主打插件扩展的企业级快速开发框架。
它首先是个基座,其次才是后台管理系统。账号、权限、组织、配置、文件、消息这些每个项目都要重复搭的能力,沉进内核当地基;业务功能全部交给插件增量交付,各自独立,可插拔也可卸载。
名字取自 Advanced、Turbo、Rapid 加 Man,让企业业务系统快点稳稳落地。
三个地方值得说
插件前端走微前端,不限技术栈
插件以 qiankun 微应用加载,基座对插件只有两条要求:
// 一:按 qiankun 规范导出生命周期
window[pluginName] = { bootstrap, mount, unmount }
// 二:在 mount 里通过 Bridge 调基座能力
const bridge = props.hostBridge
await bridge.invoke(‘auth.getAccessToken’) // 认证
await bridge.invoke(‘data.getDict’, { code: ‘structure_type’ }) // 字典
await bridge.invoke(‘picker.file’, { multiple: true }) // 文件选择器
只这两条,Vue、React、Angular 都能接,纯 HTML 写个工具页也能挂进来,老项目迁移不用重写。官方另给了 Vue3 插件前端脚手架 am_plugin,自带双入口、免登 SDK 和构建产物回写,装配工作区一条命令:
node am_frontends/create-plugin.mjs am_demo
cd am_frontends/am_demo && pnpm install && pnpm dev
每个插件还有两个入口:/app/{name} 给前台用户直访,/app/{name}/manage 从后台菜单加载。同一份代码,两种用途。用户在某个应用里能干什么,基座不判定,插件自己决定。
扩展能伸到内核,也能收回
插件不止能加页面。基座把几个关键节点做成注册表,往里逐级放开:订阅标准业务事件做旁路增强;按优先级接管或装饰基座某个服务的实现;注册新的存储驱动和通知通道;织入中间件、声明定时任务、投递队列作业、走 WebSocket 推送。
伸得深就意味着必须能收回来。所有注册都记录归属,卸载时对称清理不留残余。这些机制在 config/plugin_extend.php 各有一个开关,关掉之后服务接管短路回默认实现、事件 emit 变空操作、插件中间件不再织入。没注册的扩展对主干零影响,安全敏感的两项默认就是关闭状态。
身份只做一次
一个自然人对应一个全局身份,管理员和会员是同一个人的不同属性。基座与插件同域部署时共享会话契约,点开插件就已经登录,一处登出全局失效。跨端跳转靠短时效、一次性、不可伪造的签名票据换登录态,两边不用再各写一套 session。
基座自带什么
装完就有,不用二次开发:
认证与身份:JWT、统一身份、会员体系、SSO 接管、免登票据
权限与组织:RBAC、按钮级权限、数据权限、组织架构、菜单
配置中心:可视化表单设计器、配置组隔离、字典与远程数据
文件存储:分片上传、秒传,本地 / OSS / COS / 七牛 / S3
消息通知:邮件 / 短信 / 站内信 / 实时推送,带模板和发送日志
异步调度:Redis 队列、插件信封队列、定时任务、WebSocket
运维审计:操作与登录日志、服务监控、备份还原、基座在线增量升级
插件应用中心:分发、版本发布、签名校验,基于webman插件扩展能力
技术栈都是社区主流:后端 PHP >= 8.4 + Webman/Workerman 常驻内存 + ThinkORM,前端 Vue 3.5 + TS + Vite 7 + Element Plus + Tailwind CSS 4。
上手
# 方式一:发行包一键安装(推荐)
$ curl -fsSL https://apps.atrman.com/app/am_store/install.sh | bash
#Atrman is running at http://127.0.0.1:8787
# 方式二:源码部署
# am-serve:安装依赖并启动后端
$ composer install
$ php start.php start
#Atrman is running at http://127.0.0.1:8787
# am-web:安装管理前端并运行
$ pnpm install
$ pnpm dev访问 http://127.0.0.1:8787,安装向导走完环境检测、建库建表、写 .env、建管理员就能用。手动改 .env 和导 SQL 都不用做,向导负责。生产环境另有发行包(vendor 和前端产物都在包里,解压即跑)和宝塔面板两种方式。
开发插件的完整链路五步:后台创建插件生成骨架,装配前端工作区,写业务,pnpm build 自动回写产物,后台扫描启用。
文档在 atrman.com,插件概念、前后端开发、实战 Cookbook、开发规范都分栏目写好了。仓库内 am_demo、am_member、am_aibase 是现成参考,照着 am_demo 抄最省事。
AI 那块
仓库里还放了给 AI 编程助手用的官方技能包 am_skills,把插件开发流程和代码规范做成可安装的 SKILL:
am_skills/install.sh # Windows 用 install.bat装好之后让 AI 帮你写插件,它按同一套规范干活,从骨架生成、Bridge 调用到发布前检查都有依据。现在写代码离不开 AI 搭手,与其反复纠正,不如把规范喂进上下文。
最后
Atrman 历时半年打磨,MIT 开源,v1.0.5 已发布。
如果"每个项目重建一遍地基"这件事也让你烦了,可以试试这条路。
Gitee 上点个 ⭐,对我这种自己写着玩的项目就是最大的支持。