标准化校验逻辑的关键在于规则与执行解耦,通过结构化规则定义、分层校验机制、可插拔处理器及动态异步扩展,实现多端复用与统一错误处理。

标准化校验逻辑的关键,在于把“规则”和“执行”解耦,让同一套规则能复用在前端、后端甚至数据导入等多入口场景,而不是为每个表单单独写一堆 if-else。
统一校验规则定义
用结构化方式描述规则,而非硬编码。例如定义一个字段校验配置对象:
-
字段名:如
email - 规则列表:[{ type: 'required', msg: '邮箱必填' }, { type: 'format', pattern: 'email', msg: '邮箱格式不正确' }]
- 触发时机:blur / change / submit(支持组合)
-
关联条件:如
when: { field: 'userType', value: 'enterprise' }表示仅企业用户时启用该规则
分层校验执行机制
校验不是一次性动作,而是按粒度分层推进:
- 字段级:单个输入值的基础合规性(非空、格式、长度)
- 组级:多个字段间的逻辑约束(如“开始日期 ≤ 结束日期”、“密码与确认密码一致”)
- 全局级:跨层级或跨数组的数据一致性(如“teachContent 中每个 content 的 requirements 不能为空”)
每层校验失败都返回标准错误结构:{ field: 'content.0.requirements', message: '实验要求不能为空', level: 'error' },便于统一收集和展示。
可插拔的校验处理器
不同技术栈调用同一套规则定义,靠的是适配器模式:
- Vue 项目用
vuelidate或vee-validate加载规则配置,自动绑定到响应式字段 - Express 后端用
express-validator的checkSchema()方法解析相同 JSON 规则 - Excel 导入脚本读取规则配置,对 CSV/JSON 数据批量校验并生成报告
这样前端提交失败的字段,后端收到后也能用同一套逻辑二次校验,避免绕过前端验证导致脏数据入库。
支持动态与异步扩展
标准化不等于僵化。真实业务中常需:
- 运行时注入规则:根据用户角色或当前步骤动态启用/禁用某条校验(如审批流中“财务复核人”字段仅在终审环节出现并校验)
-
异步校验桥接:将 API 请求封装为可组合的校验单元,比如
async: { url: '/api/check-username', method: 'GET', param: 'value' },与同步规则共用错误结构 - 错误分级处理:warning 级别不阻断提交(如“手机号未实名”),error 级别必须修正(如“身份证号校验失败”)











