模块模式是实现复杂联动规则可维护、可复用、可扩展的关键路径,它将联动逻辑封装为职责单一、输入明确、输出可控、可热插拔的业务单元,由表单引擎按需调度执行闭环联动。

模块模式是实现复杂联动规则可维护、可复用、可扩展的关键路径。它不靠堆砌配置项,而是把联动逻辑封装成独立、自治、可插拔的业务单元,让表单引擎从“被动响应字段变化”升级为“主动调度规则模块”。
模块化联动的核心设计原则
联动不是字段A变→字段B动的线性映射,而是“条件触发→规则执行→状态更新→界面反馈”的闭环。模块模式正是围绕这个闭环构建:
- 职责单一:每个模块只负责一类联动场景,比如“合同类型驱动字段显隐”“供应商选择填充基础信息”“预算金额超限自动禁用提交”
-
输入明确:模块通过约定字段名或数据路径接收上下文(如
formValues.contractType),不依赖全局变量或DOM查询 -
输出可控:模块执行后返回标准化指令,例如
{ visible: ['trialPeriod', 'workLocation'], value: { status: 'draft' } } -
可热插拔:模块注册到引擎时带唯一ID和适用条件(如
schemaId: "hr-contract-form"),表单加载时按需激活
模块如何与表单引擎协同工作
引擎不再硬编码联动逻辑,而是作为“调度中心”,在字段变更、表单初始化、提交前等关键节点调用匹配的模块:
-
注册阶段:开发人员将联动模块以函数形式注册进引擎,附带匹配规则(如
match: (schema) => schema.tags.includes('finance')) -
触发阶段:当用户修改“付款方式”字段时,引擎扫描所有已注册模块,筛选出
triggerFields: ['paymentMethod']的模块 -
执行阶段:引擎传入当前表单快照(
values、errors、schema),模块内部做判断并返回操作指令 - 渲染同步:引擎解析指令,统一更新字段显隐、值、校验状态、按钮禁用等,保证视图与数据严格一致
典型模块示例:采购审批联动包
一个面向采购场景的联动模块包,包含三个协同工作的子模块:
-
供应商资质校验模块:监听
supplierId变化,调用API获取供应商信用等级,若为等级D则置灰采购金额字段并提示“需特批” -
金额分级路由模块:监听
amount,当超过50万时自动追加财务总监审批节点,并隐藏原部门经理跳过按钮 -
附件强制关联模块:当
purchaseType为“固定资产”时,要求attachment字段必填且类型限定为PDF/Excel
这三个模块彼此解耦,可单独启用、测试、版本迭代;也可组合打包为procurement-v2.1发布到企业组件市场,供其他采购类表单直接引用。
落地要点:避免模块变成新包袱
模块化不是万能解药,需配套机制防止失控:
- 模块生命周期管理:支持启用/停用、版本回滚、依赖声明(如“本模块需引擎v3.4+”)
- 调试可视化:提供联动日志面板,实时显示“哪个模块被触发→输入是什么→返回了什么指令→是否成功应用”
- 性能兜底:模块执行超时(默认300ms)自动降级,引擎继续渲染,避免卡顿;错误模块标记为“失效”,不影响其余逻辑
-
权限隔离:模块可绑定角色范围,例如“法务合规模块”仅对
legal@company.com可见,非授权用户无法配置或启用











