开源Vue组件FormCreate通过 JSON 生成TinyVue表单

FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的低代码表单生成组件。它支持 10 个 UI 框架,适配移动端,并且支持生成任何 Vue 组件。内置 20+ 种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定

文档 | GitHub | Gitee

使用 npm 安装

通过 npm 安装可以更好地与现代构建工具(如 Webpack、Vite)集成。

sh 复制代码
npm i @form-create/tiny-vue@^3
npm i @opentiny/vue @opentiny/vue-icon @opentiny/vue-theme

引入和挂载

js 复制代码
import { createApp } from 'vue';
import TinyVue from '@opentiny/vue';
import '@opentiny/vue-theme/index.css';
import formCreate from '@form-create/tiny-vue';

const app = createApp({});
app.use(TinyVue);
app.use(formCreate);
app.mount('#app');

高级版FormCreate表单设计器强势登场,让表单设计更简单

CDN 引入

TinyVue 依赖图标包与主题样式,通过 CDN 一键加载往往入口较多、版本易不一致,推荐优先使用 npm 。若必须在浏览器侧直连 CDN,请先按 @opentiny/vue@opentiny/vue-theme 的说明引入样式与组件运行时,再加载 FormCreate 的打包文件:

html 复制代码
<script src="https://unpkg.com/@form-create/tiny-vue@^3/dist/form-create.min.js"></script>

组件挂载方式

创建表单

js 复制代码
const rule = [
    { type: 'input', field: 'goods_name', title: '商品名称', value: 'form-create' },
    {
        type: 'select',
        field: 'category',
        title: '分类',
        value: 'digital',
        options: [
            { label: '数码', value: 'digital' },
            { label: '家居', value: 'home' },
        ],
    },
    { type: 'switch', field: 'enabled', title: '上架', value: true },
    {
        type: 'checkbox',
        field: 'label',
        title: '标签',
        value: [0, 1],
        options: [
            { label: '好用', value: 0 },
            { label: '快速', value: 1 },
            { label: '高效', value: 2 },
            { label: '全能', value: 3 },
        ],
    },
];
const option = {
    form: {
        labelPosition: 'right',
        labelWidth: '100px',
    },
    row: { gutter: 16 },
    submitBtn: { show: true, innerText: '提交' },
    resetBtn: { show: true, innerText: '重置' },
};
html 复制代码
<template>
    <form-create :rule="rule" v-model:api="api" v-model="formData" :option="options" @submit="handleSubmit" />
</template>
<script setup>
    import { ref } from 'vue';
    const api = ref({});
    const formData = ref({});
    const handleSubmit = (formData) => {
        alert(JSON.stringify(formData));
    };
    const options = ref({
        resetBtn: true,
    });
    const rule = ref([
        {
            type: 'input',
            field: 'goods_name',
            title: '商品名称',
            value: 'form-create',
        },
        {
            type: 'checkbox',
            field: 'label',
            title: '标签',
            value: [0, 1, 2, 3],
            options: [
                { label: '好用', value: 0 },
                { label: '快速', value: 1 },
                { label: '高效', value: 2 },
                { label: '全能', value: 3 },
            ],
        },
    ]);
</script>
相关推荐
怕浪猫5 小时前
FDE 如何正确解决现场项目工程性的问题
前端·后端·ai编程
西瓜太郎12345 小时前
外层模型卡片与分组详情成功率不一致,应该怎么排查?
前端·typescript·go·软件工程·react
GreenTea5 小时前
vLLM 与 SGLang KV Cache 底层实现机制深度调研报告
前端·后端·算法
Blockbuater_drug5 小时前
FreeSASA: 开源 SASA 计算库,pip 一条命令替代 NACCESS
c语言·开源·sasa·freesasa·溶剂可及表面积·naccess·python api
冬奇Lab7 小时前
一天一个开源项目(第217篇):free-for-dev —— 137k Star 的开发者免费服务终极宝库
开源·资讯
毕业设计7038 小时前
(免费领源码) 基于微信小程序的预制菜商城的设计与实现25172-java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
vue.js·python·mysql·微信小程序·pycharm·微信开发者工具·推荐算法
xifangge20258 小时前
AGENTS.md 怎么写?涵盖 Java、Python、Vue、Go 的 8 套开箱即用模板
java·vue.js·python
几何心凉8 小时前
没有万能模型:我用 AiiOnly Token Plan,把多款大模型的长处拼进同一个项目
前端
kyriewen8 小时前
Claude Code 的额度今天缩水了17%——官方公告上写的是"永久提高25%"
前端·ai编程·claude
雪芽蓝域zzs9 小时前
vue解构平铺VS对象包裹
前端·javascript·vue.js