我们把后台框架拆成了两部分:一个基座,一堆插件

Atrman v1.0.5 发布,PHP 8.4 + Webman 常驻内存 + Vue3 qiankun 微前端的企业级插件化开发框架,MIT 开源。

Raingad Raingad
·
·
5 阅读

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.com/raingad/atrman

MIT 开源

🚀 在线演示

demo.atrman.com

体验账号 demo / demo123

📖 文档官网

atrman.com

全部文档以官网为准

🧩 插件应用中心

apps.atrman.com

持续更新中

💬 交流群

QQ群 933351899

使用答疑、新版本发布、需求讨论

如果"每个项目重建一遍地基"这件事也让你烦了,可以试试这条路。

Gitee 上点个 ⭐,对我这种自己写着玩的项目就是最大的支持。

评论

目录