最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

前端低代碼form-generator實現及新增自定義組件詳解

 更新時間:2023年11月06日 11:20:44   作者:三倆句  
這篇文章主要給大家介紹了關于前端低代碼form-generator實現及新增自定義組件的相關資料,form-generator是一個開源的表單生成器,可以幫助我們快速構建各種表單頁面,需要的朋友可以參考下

form-generator是什么?

form-generator的作者是這樣介紹的:Element UI表單設計及代碼生成器,可將生成的代碼直接運行在基于Element的vue項目中;也可導出JSON表單,使用配套的解析器將JSON解析成真實的表單。

實際用大白話講就是一個基于Element UI組件庫的一個低代碼平臺,通過拖拽的方式,將單個的組件組合成你想要的樣子,最終一鍵生成代碼,可以直接放到你的Vue項目中,提高開發(fā)效率。

form-generator的實現

布局

  • 左側:供拖拽的組件
  • 中間:組件單個及組合預覽效果
  • 右側:組件及表達的配置項

實現

  • 把組件在config.js配置成json
  • 通過拖拽把當前組件的json轉化成vue render可以識別的數據格式

那請問什么樣的數據格式是vue render可以識別的?

這個時候你就要了解下vue的render方法了~

render函數講解

在使用render函數中,會使用到一個參數createElement,而這個createElement參數,本質上,也是一個函數,是vue中構建虛擬dom所使用的工具。下面就圍繞著這個createElement來看一下。

在createelement方法,有三個參數:

1. 第一個參數(必要參數):主要是用于提供dom中的html內容,類型可以是字符串、對象或函數。

2. 第二個參數(對象類型,可選):用于設置這個dom中的一些樣式、屬性、傳的組件的參數、綁定事件之類的。

3. 第三個參數(類型是數組,數組元素類型是VNode,可選):主要用于設置分發(fā)的內容,如新增的其他組件。

注意:組件樹中的所有vnode必須是唯一的 通過傳入createElement參數,創(chuàng)建虛擬節(jié)點,然后再將節(jié)點返回給render返回出去。
總的來說,render函數的本質就是創(chuàng)建一個虛擬節(jié)點。

render方法了解的差不多了,那我們看下form-generator里面把json轉化后的vnode

到此form-generator大概的實現思路我們知道了,下面我們看下如何自定義組件,在form-generator的基礎上添磚加瓦,實現我們項目的業(yè)務需求~

如何自定義組件

  • src\components\generator\config.js 中添加一個json
  • src\compontnes\目錄下創(chuàng)建對應的組件
  • main.js中全局注冊剛創(chuàng)建的組件
  • src\views\index\RightPanel.vue 中綁定第一步中json中添加的各個屬性值

代碼

//第一步:在/form-generator/src/components/generator/config.js里面加入組件json
{
    __config__: {
      label: '自定義按鈕',
      showLabel: false,
      changeTag: true,
      labelWidth: null,
      tag: 'customButton',
      tagIcon: 'button',
      span: 24,
      layout: 'colFormItem',
    },
    __slot__: {
      default: '自定義按鈕111'
    },
    style: {
      width: 'auto',
      height: '35px',
      margin: '20px',
      borderRadius: '30px',
      display: 'flex',
      justifyContent: 'center',
      alignItems: 'center',
      color: '#FFF',
      backgroundColor: '#409EFF',
      borderColor: '#409EFF'
    },
    dataName: '自定義按鈕',
    type: 'primary',
    icon: '',
    round: false,
    size: 'normal',
    site: 'center', // 按鈕位置 左:flex-start 中:cneter 右:flex-end
    plain: false,
    circle: false,
    disabled: false,
    funcType: 'share'
}
//第二步:在components里面寫自己的組件 
//如:/form-generator/src/components/customButton/index.vue

<template>
  <div ref="customButton" class="customButton" @click="handleShare">
    <div v-text="btnText"></div>
  </div>
</template>
    
<script>
export default {
  name: "customButton",
  data() {
    return {};
  },
  computed: {
    btnText() {
      return this.$attrs.dataName;
    },
  },
  methods: {
    handleShare() {
      this.$emit("openShare", "customButton");
    },
  },
};
</script>
//第三步:在/form-generator/src/views/index/main.js里面引入我們的自定義組件
import customButton from '@/components/customButton/index.vue'
Vue.component('customButton', customButton)
//第四步:在/form-generator/src/views/index/RightPanel.vue里面寫上想要配置的屬性值
<el-form-item v-if="activeData.__config__.tag === 'customButton'" label="按鈕標題">
     <el-input v-model="activeData.dataName" placeholder="請輸入按鈕標題" @input="changeRenderKey"
     />
</el-form-item>

注意:這里的__config__.tag一定要唯一,和json里面的tag對應,來定義當前組件的配置項。

問題點:

大家一定很奇怪,這里我明明只配置了一條屬性,為啥會展示這么多?

其實是RightPanel這個文件里面,配置了許多默認展示的屬性值,大家可以看看文件看代碼里面沒有幾個自定義的組件,那其他組件都是怎么來的呢?

大家可以看下這個文件,里面會有一些其他組件的代碼

以上是我對form-generator的一點了解,希望對和我遇到類似需求的你有一點點幫助,同時也期待大家的指點。

總結

到此這篇關于前端低代碼form-generator實現及新增自定義組件的文章就介紹到這了,更多相關前端低代碼form-generator實現內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Vue 綁定style和class樣式的寫法

    Vue 綁定style和class樣式的寫法

    class 與 style 綁定就是專門用來實現動態(tài)樣式效果的技術,如果需要動態(tài)綁定 class 或 style 樣式,可以使用 v-bind 綁定,本文給大家講解Vue 綁定style和class樣式,感興趣的朋友一起看看吧
    2023-10-10
  • vue中axios給后端傳遞參數出現等于號和雙引號的問題及解決方法

    vue中axios給后端傳遞參數出現等于號和雙引號的問題及解決方法

    這篇文章主要介紹了vue中axios給后端傳遞參數出現等于號和雙引號要怎么解決,項目場景我是傳遞一個string字符給后端時候報錯,隨手把這個問題記錄下來了,需要的朋友可以參考下解決方案
    2022-11-11
  • vue router demo詳解

    vue router demo詳解

    這篇文章主要為大家詳細介紹了vue router demo演示代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • vue3使用ref的性能警告問題

    vue3使用ref的性能警告問題

    這篇文章主要介紹了vue3使用ref的性能警告問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vue 實現全選全不選的示例代碼

    vue 實現全選全不選的示例代碼

    本篇文章主要介紹了vue 實現全選全不選的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 探索Vue.js component內容實現

    探索Vue.js component內容實現

    這篇文章主要和大家一起探索Vue.js component內容實現,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • vue項目nginx二級域名配置方式

    vue項目nginx二級域名配置方式

    這篇文章主要介紹了vue項目nginx二級域名配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Vue路由自動添加#的問題及解決

    Vue路由自動添加#的問題及解決

    這篇文章主要介紹了Vue路由自動添加#的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue使用Echarts圖表多次初始化報錯問題的解決方法

    Vue使用Echarts圖表多次初始化報錯問題的解決方法

    最近在學習Vue的時候,正好學到了引入echarts圖表做數據統(tǒng)計的內容,所以下面這篇文章主要給大家介紹了關于Vue使用Echarts圖表多次初始化報錯問題的解決方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • vue可拖拽的瀑布流布局組件實現詳解

    vue可拖拽的瀑布流布局組件實現詳解

    這篇文章主要為大家介紹了vue的可拖拽的瀑布流布局組件有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06

最新評論

景德镇市| 普定县| 余庆县| 宣武区| 饶阳县| 兴和县| 津南区| 温宿县| 罗定市| 基隆市| 咸阳市| 会东县| 北流市| 萨嘎县| 登封市| 大名县| 资中县| 石城县| 阜平县| 九寨沟县| 定南县| 湟中县| 丹江口市| 青州市| 法库县| 汤阴县| 甘泉县| 广灵县| 临颍县| 珠海市| 普定县| 青铜峡市| 化德县| 新沂市| 景德镇市| 拉孜县| 沙雅县| 恭城| 江永县| 金川县| 裕民县|