v5.x 当前版本 · 平台极小,应用外置
平台极小,应用外置,装完即用
应用市场式插件平台:平台极小、应用外置、装完即用。业务能力以插件应用的形式从市场安装,全程不需要重启宿主。

平台工作台总览(截图待补充)
/images/home/hero-dashboard.png把截图放到 public/images/home/hero-dashboard.png,页面会自动显示。建议尺寸 2560 × 1600(16:10)。
- 官方应用
- 11
- 菜单项
- 508
- 页面视图
- 100
- 权限按钮
- 408
项目生态
五个工程,一套平台
平台后端 + 插件仓库 + 三个前端工程,各自独立构建、独立部署。
wujies-platform
后端平台Spring Boot 3 + MyBatis-Plus 多模块宿主:应用市场、插件运行时、多租户与系统底座。
impressivel/wujies-platformwujies-plugins
应用与插件全部业务应用本体:自包含后端工程、迁移脚本、app.json 与前端远程产物。
impressivel/wujies-pluginswujies-admin
管理端前端Vue 3 + Element Plus 管理端,同时承担远程应用前端的运行期宿主。
impressivel/wujies-adminwujies-shop
PC 用户端面向终端用户的 PC Web:商城、会员、社交、IM、考试与图床等应用页面。
impressivel/wujies-shopwujies-mobile
移动端uni-app 一套代码编译到 H5、App 与微信小程序等多端。
impressivel/wujies-mobile核心能力
平台极小,能力外置
平台只负责底座与契约,业务能力以应用形式独立构建、独立发布、按需安装。
应用外置
业务模块独立打包成「应用」(后端 jar + 前端远程产物),从应用市场安装 / 升级 / 卸载,宿主不重新构建。
契约随应用走
平台里没有 *-api 契约模块,平台对 cn.wujies.<app>.* 的 Java 引用为 0。每个应用是自包含的一个工程。
热插拔
每个应用一个独立类加载器与 Spring 子上下文。装了就进路由清单与登录检查,卸了就出清单,不需要重启。
多租户
应用按租户安装与授权;菜单归属可追溯,管理员改不坏、也删不掉应用声明的菜单。
包安全
产物白名单 + 分离式签名(signature.txt 覆盖除自身外全部文件);三档模式 off / warn / enforce,默认 enforce。
一键部署
提供 1Panel 应用包(平台两形态 + 定时任务调度中心 + 服务监控中心),容器首次启动自动建库建表。
适合这些场景
- 一套系统交付多个客户,客户之间的功能组合不同。
- 客户临时加模块,但不能停机、不能重新发版。
- 想做应用市场 / 插件生态,让第三方上架应用。
- 想把「平台」与「业务」的边界固化在工程结构里。
这些情况直接用上游更省事
- 功能固定,只服务一个客户。
- 只是想把代码分模块、写整洁,没有分发诉求。
- 不打算维护插件运行时、包签名与迁移编排。
- 团队规模小,停机发版可以接受。
常见问题
先回答几个高频疑问
和 RuoYi-Vue-Plus 是什么关系?
底座能力来自 RuoYi-Vue-Plus 并完整保留;区别在业务模块的交付方式——从编译期耦合改成运行期安装的应用。
为什么平台里没有 *-api 契约模块?
契约随应用走。平台对 cn.wujies.<app>.* 的 Java 引用为 0,每个应用是自包含工程;这是刻意的边界,不是没做完。
安装、升级应用需要重启宿主吗?
不需要。每个应用有独立类加载器与 Spring 子上下文,装了就进路由清单与登录检查,卸了就出清单。
应用的前端页面是怎么加载的?
后台前端在运行期按后端清单 import() 应用的 ESM 产物,裸模块由 import map 指到宿主同一份实例,避免双 Vue。
可以商用吗?
项目以 MIT 协议发布,可商用;请在衍生项目中保留原作者的版权声明。