Skip to content

JAR 插件路由协议(mms-ui)

约定 后端 plugin.jsonfrontend 块与 管理端前端 的协作方式,便于后续「插件市场」与 后端控制路由getMenu)并存。

白话一句

后端在 JAR 里写好 frontend(包名、路由前缀等),宿主会把 manifest 通过 /system/pluginHost/manifests 交给前端;前端用来提示兼容性展示市场卡片,真正进菜单仍要配 sys_function(权限体系不变)。

阅读顺序(新手)

本文假设你已经能用宿主加载 JAR 并理解 plugin.json若还没有:请先 JAR 开发指南 · 第 0 节 跑通示例,再读 JAR 插件入门不要 第一轮就同时啃 frontend 与路由约定。

1. 后端元数据(已有字段)

摘自契约(见主仓 mms-plugin-apiMETA-INF/mms/plugin.example.json)。

json
{
  "frontend": {
    "modulePackage": "@scope/plugin-ui",
    "compatibleMmsUi": "语义化版本或文案",
    "routePrefixes": ["/comments"]
  }
}
json
{
  "id": "com.example.mms.comments",
  "version": "1.0.0",
  "name": "评论插件",
  "description": "演示 frontend 块",
  "requiresMms": {
    "revisionMin": 21,
    "revisionMax": 21,
    "springBoot": "3.5.8"
  },
  "entryClass": "com.example.mms.comments.CommentsPlugin",
  "kind": "extension",
  "frontend": {
    "modulePackage": "@example/mms-comments-ui",
    "compatibleMmsUi": "1.x",
    "routePrefixes": ["/comments"]
  }
}
字段含义
modulePackage前端 NPM 包名或联邦模块逻辑名,宿主只做展示与校验提示
compatibleMmsUi与当前 mms-ui 兼容声明,UI 可做版本提示
routePrefixes路由 path 前缀,不得与核心 /system/* 冲突

2. 与 mms-ui 后端动态路由的关系

当前菜单来自 GET common/getMenu,组件路径为 views/... 字符串。插件前端有两种集成级别:

级别做法适用
A. 宿主内嵌页面mms-ui 增加 views/system/pluginMarket/* 等,仅占位运维;插件业务页仍进主仓库当前已采用
B. 远程/联邦模块vite-plugin-federation 或 iframe;routePrefixes 注册为子路由,component 指向远程入口规划中
C. 菜单下发扩展字段sys_function 或单独 API 增加 pluginId/remoteEntrybackEnd.ts 解析后映射 component规划中,需后端配合

3. HTTP 聚合(已实现)

GET /system/pluginHost/manifestssuper_admin):返回已加载插件的 manifest(与 plugin.json 对齐,含 id / version / name / description / kind / frontend)。供市场页与路由提示使用;代替权限,仍走 sys_function + 角色。 菜单一键入库:主仓 mms/script/db/increment_20260331_plugin_market_menu.sql(仅 super_admin 角色菜单 + 绑定 role_id='1')。

4. 市场 UI(实现状态)

主仓 mms-ui 提供 views/system/pluginMarket/index.vue(超级管理员):展示 status / health / manifests、上传安装 JAR。亦可执行增量 SQL 写入 sys_function(见上文)替代手工配菜单。

5. 相关文档

Released under the MIT License.