Vue JSON Schema Form 可视化表单开发完整指南
Vue JSON Schema Form 是一个基于 Vue 和 JSON Schema 的开源项目,用于快速构建 HTML 表单。它支持多种 UI 框架,如 ElementUi、antd、iview3 和 naiveUi,适用于活动编辑器、H5 编辑器、CMS 等数据配置场景。
项目核心特性
Vue JSON Schema Form 提供了丰富的功能特性,让表单开发变得更加高效和灵活:
- 多 UI 框架支持:无缝集成 ElementUi、antd、iview3 和 naiveUi
- 可视化配置:所见即所得的表单设计体验
- 数据驱动:纯 JSON 配置,告别模板代码
- 类型安全:基于 JSON Schema 的强类型校验
- 实时预览:表单设计过程中实时查看效果
快速开始
环境准备与安装
首先需要克隆项目到本地:
git clone https://gitcode.com/gh_mirrors/vu/vue-json-schema-form
然后安装项目依赖:
cd vue-json-schema-form
yarn install
启动开发环境
项目提供了多个演示环境,可以根据需要选择启动:
# 启动 Playground 演示环境
yarn run demo:dev --dir=index
# 启动表单 Schema 生成器
yarn run demo:dev --dir=schema-generator
# 启动活动编辑器
yarn run demo:dev --dir=vue-editor
启动后可以通过以下地址访问不同的演示页面:
- Playground:http://127.0.0.1:8800/
- 可视化表单 Schema 编辑器:http://127.0.0.1:8800/schema-generator.html
- 活动编辑器:http://127.0.0.1:8800/vue-editor.html
基础使用示例
以下是一个简单的用户信息表单配置示例:
<template>
<VueForm
v-model="formData"
:schema="userSchema"
:ui-schema="uiConfig"
/>
</template>
<script>
import VueForm from '@lljj/vue-json-schema-form';
export default {
components: {
VueForm
},
data() {
return {
formData: {},
userSchema: {
type: 'object',
required: ['userName', 'age'],
properties: {
userName: {
type: 'string',
title: '用户名',
default: 'Liu Jun'
},
age: {
type: 'number',
title: '年龄'
},
bio: {
type: 'string',
title: '签名',
minLength: 10,
default: '知道的越多、就知道的越少'
}
}
},
uiConfig: {
bio: {
'ui:options': {
placeholder: '请输入你的签名',
type: 'textarea',
rows: 1
}
}
}
};
}
};
</script>
项目架构解析
Vue JSON Schema Form 采用模块化架构设计,主要包含以下核心模块:
核心表单组件
项目提供了 Vue2 和 Vue3 两个版本的核心组件:
- Vue2 版本:位于
packages/lib/vue2/vue2-core目录 - Vue3 版本:位于
packages/lib/vue3/vue3-core目录
UI 框架适配器
针对不同的 UI 框架,项目提供了专门的适配器:
- ElementUi 适配器:
packages/lib/vue2/vue2-form-element - Iview3 适配器:
packages/lib/vue2/vue2-form-iview3 - Element Plus 适配器:
packages/lib/vue3/vue3-form-element - Antdv 适配器:
packages/lib/vue3/vue3-form-ant - NaiveUi 适配器:
packages/lib/vue3/vue3-form-naive
表单字段类型支持
Vue JSON Schema Form 支持多种表单字段类型,每种类型都有对应的配置选项:
字符串字段
支持文本框、文本域、密码框等多种输入类型:
{
"userName": {
"type": "string",
"title": "用户名",
"minLength": 2,
"maxLength": 20
}
}
数字字段
支持整数、浮点数等数字类型输入:
{
"age": {
"type": "number",
"title": "年龄",
"minimum": 0,
"maximum": 150
}
}
数组字段
支持多种数组展示形式,包括列表、表格等:
{
"hobbies": {
"type": "array",
"title": "兴趣爱好",
"items": {
"type": "string"
}
}
}
对象字段
支持嵌套对象结构,可以构建复杂的表单层级:
{
"address": {
"type": "object",
"title": "地址信息",
"properties": {
"province": { "type": "string" },
"city": { "type": "string" },
"detail": { "type": "string" }
}
}
高级功能配置
表单联动配置
Vue JSON Schema Form 支持表单字段之间的联动效果:
{
"uiSchema": {
"city": {
"ui:options": {
"watch": {
"province": "provinceChange"
}
}
}
}
}
自定义验证规则
除了标准的 JSON Schema 验证规则外,还支持自定义验证逻辑:
{
"customValidation": {
"validator": function(value, schema) {
// 自定义验证逻辑
return value.length > 0 ? true : '该字段不能为空';
}
}
}
实际应用场景
活动编辑器开发
Vue JSON Schema Form 可以用于构建活动配置后台,通过动态表单实现灵活的活动参数配置。
H5 页面生成器
快速创建 H5 页面配置表单,支持拖拽式组件配置和实时预览功能。
CMS 数据管理
为企业 CMS 系统提供统一的数据录入界面,确保数据格式一致性。
最佳实践建议
表单设计原则
在使用 Vue JSON Schema Form 时,建议遵循以下设计原则:
- 保持 Schema 简洁:避免过度复杂的嵌套结构
- 合理使用默认值:为用户提供良好的初始体验
- 充分利用校验:利用 JSON Schema 的校验能力确保数据质量
性能优化技巧
- 对于大型表单,建议使用懒加载方式加载字段
- 合理使用缓存机制,避免重复渲染
- 对复杂字段进行组件化封装,提高复用性
常见问题解答
表单数据绑定问题
确保使用 v-model 正确绑定表单数据,表单数据的变化会自动同步到绑定的变量。
自定义组件集成
如果需要集成自定义组件,可以通过注册自定义字段类型来实现。
通过本指南,你已经全面了解了 Vue JSON Schema Form 的核心功能和用法。现在就开始使用这个强大的工具,提升你的表单开发效率吧!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



