动态表单模板需分离结构与数据:结构以含唯一fieldCode的JSON配置保存,支持localStorage本地存储或后端API持久化;Vue中通过v-for动态渲染,绑定formData实现配置驱动。

动态表单模板的保存与加载,核心在于把“结构”和“数据”分开处理:结构(即字段类型、顺序、校验规则等)存为可复用的配置,数据(用户填写内容)单独存储。Vue 本身不负责持久化,需配合前端存储机制或后端接口完成。
一、模板结构的定义与序列化
表单模板本质是一组 JSON 配置,描述每个字段的元信息。例如:
{
"name": "客户信息登记",
"code": "cust_register_v1",
"fields": [
{ "fieldCode": "name", "label": "姓名", "type": "input", "required": true },
{ "fieldCode": "phone", "label": "手机号", "type": "input", "rules": ["phone"] },
{ "fieldCode": "tags", "label": "标签", "type": "select", "options": ["VIP", "试用", "流失"] }
]
}
这个对象就是可保存、可传输、可渲染的模板。关键点是:每个字段必须有唯一 fieldCode,用于后续双向绑定和数据映射。
二、前端本地保存与加载(适合轻量场景)
使用 localStorage 或 sessionStorage 快速落地,无需后端参与:
从零开始编排 SpringBoot+Vue 全栈项目工作流,适用于新建全栈项目或完整脚手架请求,触发后依次调用 product‑spec‑builder(需求调研)等模块。
-
保存模板:调用
localStorage.setItem('form-cust_register_v1', JSON.stringify(template)) -
加载模板:用
JSON.parse(localStorage.getItem('form-cust_register_v1') || 'null')获取;返回 null 表示未找到 - 建议加一层封装,统一处理解析失败、空值等情况,避免运行时错误
三、后端存储与加载(生产推荐方案)
真正可靠的动态表单系统应由后端管理模板生命周期(版本、权限、发布状态)。典型流程如下:
- 前端通过表单设计器生成配置后,POST 到
/api/form-templates接口,携带code、name、version和fields字段 - 后端将整个 JSON 存入数据库的
t_form_template表,并关联t_form_field维护字段明细 - 加载时,前端传
code(如"cust_register_v1")请求GET /api/form-templates/{code},后端返回完整结构 - 响应中建议包含
id、version、status(0草稿/1已发布),前端可据此控制是否允许编辑或提交
四、在 Vue 中加载后动态渲染
拿到模板 JSON 后,不需硬编码组件,而是用 v-for 驱动渲染:
- 遍历
template.fields,根据item.type动态选择组件: - 所有字段共用一个响应式对象
formData,键名严格对齐fieldCode,确保数据归位准确 - 校验规则、默认值、禁用逻辑等都从
item中读取,实现“配置即逻辑”
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!









