PLUGIN SYSTEM

业务以插件挂载。

基础能力进基座、业务能力做插件——manifest 驱动安装/卸载、Provider 层隔离、同库/异库双模式。

1号插件 CMS
24CMS 表
2数据库模式
1公开接口
01 / ISOLATION

插件与基座完全隔离。

插件代码独立目录,manifest 驱动,不污染基座代码。

A

代码独立目录

插件代码全部放在独立目录 webman/plugin/{plugin_key}/,安装即拷入、卸载即移除,基座代码零改动。

webman/ plugin/ cms/ ← 插件独立目录 manifest.json src/ migrations/
B

Provider 唯一入口

插件只能调用 6 个 Provider(Account/Dict/Config/Context/Audit/Menu),无法直接访问基座内部实现,边界清晰。

插件 → Provider 层 → 基座能力 (不允许绕过 Provider 直连基座)
RULE 前后端强分离 后台输出 JSON 前台静态化 插件域内 _key 关联
02 / MANIFEST

manifest,插件的身份证。

一个 JSON 描述插件的全部元信息,安装器据此完成安装/卸载。

manifest.json 示例

{
  // 插件唯一标识
  "key": "cms",
  "name": "官网管理",
  "version": "1.0.0",
  "description": "CMS 官网内容管理插件",

  // 菜单注入
  "menus": [ ... ],

  // 数据库模式
  "db_mode": "external",  // internal | external
  "migrations": [ "001_init.sql" ],

  // 依赖
  "require": { "base": ">=2.0.0" }
}
01

安装

拷贝代码、执行迁移、注入菜单(按 plugin_key)

02

卸载

按 plugin_key 删除菜单、清理数据、移除代码目录

03

升级

版本比对、增量迁移、兼容性检查

03 / DB MODE

同库 or 异库,两种模式。

插件表可以建在基座库,也可以建独立库,灵活选择。

同库录入

internal · 简单直接

插件表直接建在基座 centersql 库里,与基座表共用连接,管理简单,适合小型插件。

  • 表建在基座库 centersql
  • 共用数据库连接与事务
  • 迁移脚本在库内执行

异库录入

external · 便于拆开维护

插件表建在独立库(如 tpcms),便于拆开维护、独立备份。异库须同步基座资料影子表。

  • 独立库,独立连接
  • 须同步基座资料影子表
  • 适合大型业务插件
04 / CASE · CMS

第 1 号插件 CMS,官网管理。

异库 tpcms,24 表(基座机制 5 + cms 业务 15 + 影子 4),双标记 PHP 解析,后端合成预览。

5

基座机制表

同步基座资料账号映射插件配置
15

CMS 业务表

栏目文章模板标签
4

影子表

资料影子同步映射
01

双标记 PHP 解析

模板同时支持类标记与 PHP 语法解析,灵活渲染内容。

02

后端合成预览

编辑时后端合成预览,所见即所得。

03

域内 _key 关联

插件域内关联一律 _key,无物理外键,保持松耦合。

04

唯一公开接口

/api/cms/form/submit —— 表单提交对外唯一入口。

05

前台静态化

前台产物静态化/独立前端,不依赖 webman 运行时渲染。

06

文档独立

插件规划文档统一放根目录 plugin_doc/cms/。

插件体系已就绪,业务挂载即可。

manifest 描述、Provider 隔离、同库异库双模式,插件即插即用。