前端低代码form-generator的实现及新增自定义组件

form-generator的实现及新增自定义组件

form-generator是什么?✨

form-generator的作者是这样介绍的:Element UI表单设计及代码生成器,可将生成的代码直接运行在基于Element的vue项目中;也可导出JSON表单,使用配套的解析器将JSON解析成真实的表单。

实际用大白话讲就是一个基于Element UI组件库的一个低代码平台,通过拖拽的方式,将单个的组件组合成你想要的样子,最终一键生成代码,可以直接放到你的Vue项目中,提高开发效率。

form-generator的实现✨

布局

在这里插入图片描述
左侧:供拖拽的组件
中间:组件单个及组合预览效果
右侧:组件及表达的配置项

实现

  1. 把组件在config.js配置成json
  2. 通过拖拽把当前组件的json转化成vue render可以识别的数据格式

那请问什么样的数据格式是vue render可以识别的?
这个时候你就要了解下vue的render方法了~

render函数讲解

在使用render函数中,会使用到一个参数createElement,而这个createElement参数,本质上,也是一个函数,是vue中构建虚拟dom所使用的工具。下面就围绕着这个createElement来看一下。
在createelement方法,有三个参数:
在这里插入图片描述
1. 第一个参数(必要参数):主要是用于提供dom中的html内容,类型可以是字符串、对象或函数。
2. 第二个参数(对象类型,可选):用于设置这个dom中的一些样式、属性、传的组件的参数、绑定事件之类的。
3. 第三个参数(类型是数组,数组元素类型是VNode,可选):主要用于设置分发的内容,如新增的其他组件。

注意:组件树中的所有vnode必须是唯一的 通过传入createElement参数,创建虚拟节点,然后再将节点返回给render返回出去。
总的来说,render函数的本质就是创建一个虚拟节点。

render方法了解的差不多了,那我们看下form-generator里面把json转化后的vnode
在这里插入图片描述
到此form-generator大概的实现思路我们知道了,下面我们看下如何自定义组件,在form-generator的基础上添砖加瓦,实现我们项目的业务需求~

如何自定义组件✨

  1. src\components\generator\config.js 中添加一个json
  2. src\compontnes\目录下创建对应的组件
  3. main.js中全局注册刚创建的组件
  4. src\views\index\RightPanel.vue 中绑定第一步中json中添加的各个属性值

代码

//第一步:在/form-generator/src/components/generator/config.js里面加入组件json
{
   
   
    __config__: {
   
   
      label: '自定义按钮',
      showLabel: false,
      changeTag: true,
      labelWidth
### 实现和使用自定义组件 #### 创建自定义组件 为了在 `form-generator` 中集成并使用自定义组件,需先创建 `.vue` 文件来封装所需功能。例如,假设要添加一个名为 `Htitle` 的标题组件: ```vue <!-- Htitle.vue --> <template> <div class="htitle"> {{ title }} </div> </template> <script> export default { name: 'Htitle', props: ['title'] } </script> <style scoped> .htitle { font-size: 20px; color: blue; } </style> ``` 此代码片段展示了如何构建一个简单的 Vue 单文件组件[^4]。 #### 导入自定义组件Form-Generator 接着,在合适的位置导入新创建的组件以便于后续调用。通常是在项目的入口文件或是特定页面内执行这一步骤: ```javascript // main.js 或其他适当位置 import htitle from '../../components/render/article/htitle.vue'; // 引入自己的自定义组件 Vue.component('htitle', htitle); ``` 通过上述操作可以确保全局范围内都能访问到这个新的自定义组件。 #### 配置 JSON Schema 支持自定义组件 为了让 `form-generator` 能识别并渲染这些自定义组件,还需要更新配置项中的 widget 列表,使其包含新加入的部件名称及其对应的属性设置方法等信息。具体做法如下所示: ```json { "widgets": [ ... { "type": "custom", "name": "htitle", // 自定义组件名 "label": "大标题", "icon": "el-icon-document-checked" } ] } ``` 这段 JSON 片段说明了怎样向 widgets 数组里追加一个新的条目用于描述自定义的大标题组件[^3]。 #### 使用自定义组件生成表单 最后当一切准备就绪之后就可以像平常一样利用可视化界面去编辑表单结构了。此时应该可以在左侧工具栏看到刚刚添加进去的那个 “大标题” 控件选项卡,并能够将其拖放到画布上来快速搭建出想要的效果图样[^1]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值