欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

前端低代碼form-generator實(shí)現(xiàn)及新增自定義組件詳解

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

form-generator是什么?

form-generator的作者是這樣介紹的:Element UI表單設(shè)計(jì)及代碼生成器,可將生成的代碼直接運(yùn)行在基于Element的vue項(xiàng)目中;也可導(dǎo)出JSON表單,使用配套的解析器將JSON解析成真實(shí)的表單。

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

form-generator的實(shí)現(xiàn)

布局

  • 左側(cè):供拖拽的組件
  • 中間:組件單個(gè)及組合預(yù)覽效果
  • 右側(cè):組件及表達(dá)的配置項(xiàng)

實(shí)現(xiàn)

  • 把組件在config.js配置成json
  • 通過(guò)拖拽把當(dāng)前組件的json轉(zhuǎn)化成vue render可以識(shí)別的數(shù)據(jù)格式

那請(qǐng)問(wèn)什么樣的數(shù)據(jù)格式是vue render可以識(shí)別的?

這個(gè)時(shí)候你就要了解下vue的render方法了~

render函數(shù)講解

在使用render函數(shù)中,會(huì)使用到一個(gè)參數(shù)createElement,而這個(gè)createElement參數(shù),本質(zhì)上,也是一個(gè)函數(shù),是vue中構(gòu)建虛擬dom所使用的工具。下面就圍繞著這個(gè)createElement來(lái)看一下。

在createelement方法,有三個(gè)參數(shù):

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

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

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

注意:組件樹(shù)中的所有vnode必須是唯一的 通過(guò)傳入createElement參數(shù),創(chuàng)建虛擬節(jié)點(diǎn),然后再將節(jié)點(diǎn)返回給render返回出去。
總的來(lái)說(shuō),render函數(shù)的本質(zhì)就是創(chuàng)建一個(gè)虛擬節(jié)點(diǎn)。

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

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

如何自定義組件

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

代碼

//第一步:在/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里面寫(xiě)自己的組件 
//如:/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里面寫(xiě)上想要配置的屬性值
<el-form-item v-if="activeData.__config__.tag === 'customButton'" label="按鈕標(biāo)題">
     <el-input v-model="activeData.dataName" placeholder="請(qǐng)輸入按鈕標(biāo)題" @input="changeRenderKey"
     />
</el-form-item>

注意:這里的__config__.tag一定要唯一,和json里面的tag對(duì)應(yīng),來(lái)定義當(dāng)前組件的配置項(xiàng)。

問(wèn)題點(diǎn):

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

其實(shí)是RightPanel這個(gè)文件里面,配置了許多默認(rèn)展示的屬性值,大家可以看看文件看代碼里面沒(méi)有幾個(gè)自定義的組件,那其他組件都是怎么來(lái)的呢?

大家可以看下這個(gè)文件,里面會(huì)有一些其他組件的代碼

以上是我對(duì)form-generator的一點(diǎn)了解,希望對(duì)和我遇到類(lèi)似需求的你有一點(diǎn)點(diǎn)幫助,同時(shí)也期待大家的指點(diǎn)。

總結(jié)

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

相關(guān)文章

  • lottie實(shí)現(xiàn)vue自定義loading指令及常用指令封裝詳解

    lottie實(shí)現(xiàn)vue自定義loading指令及常用指令封裝詳解

    這篇文章主要為大家介紹了lottie實(shí)現(xiàn)vue自定義loading指令及常用指令封裝,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Vue使用Echarts實(shí)現(xiàn)排行榜效果

    Vue使用Echarts實(shí)現(xiàn)排行榜效果

    這篇文章主要為大家詳細(xì)介紹了Vue使用Echarts實(shí)現(xiàn)排行榜效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue+flv.js+SpringBoot+websocket實(shí)現(xiàn)視頻監(jiān)控與回放功能

    vue+flv.js+SpringBoot+websocket實(shí)現(xiàn)視頻監(jiān)控與回放功能

    vue+springboot的項(xiàng)目,需要在頁(yè)面展示出??档挠脖P(pán)錄像機(jī)連接的攝像頭的實(shí)時(shí)監(jiān)控畫(huà)面以及回放功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-02-02
  • vue+vite+diff.js使用小結(jié)

    vue+vite+diff.js使用小結(jié)

    本文主要介紹了vue+vite+diff.js使用小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • 在?Vue?中使用?dhtmlxGantt?組件時(shí)遇到的問(wèn)題匯總(推薦)

    在?Vue?中使用?dhtmlxGantt?組件時(shí)遇到的問(wèn)題匯總(推薦)

    dhtmlxGantt一個(gè)功能豐富的甘特圖插件,支持任務(wù)編輯,資源分配和多種視圖模式,這篇文章主要介紹了在?Vue?中使用?dhtmlxGantt?組件時(shí)遇到的問(wèn)題匯總,需要的朋友可以參考下
    2023-03-03
  • moment轉(zhuǎn)化時(shí)間戳出現(xiàn)Invalid Date的問(wèn)題及解決

    moment轉(zhuǎn)化時(shí)間戳出現(xiàn)Invalid Date的問(wèn)題及解決

    這篇文章主要介紹了moment轉(zhuǎn)化時(shí)間戳出現(xiàn)Invalid Date的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue+webrtc(騰訊云) 實(shí)現(xiàn)直播功能的實(shí)踐

    vue+webrtc(騰訊云) 實(shí)現(xiàn)直播功能的實(shí)踐

    本文主要介紹了vue+webrtc(騰訊云) 實(shí)現(xiàn)直播功能的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Vue混合文件使用以及ref的引用實(shí)例詳解

    Vue混合文件使用以及ref的引用實(shí)例詳解

    ref用來(lái)輔助開(kāi)發(fā)者在不依賴于jQuery的情況下,獲取DOM元素或組件的引用,下面這篇文章主要給大家介紹了關(guān)于Vue混合文件使用以及ref的引用的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • vue中百度地圖定位及附近搜索功能使用步驟

    vue中百度地圖定位及附近搜索功能使用步驟

    這篇文章主要為大家介紹了vue中百度地圖定位及附近搜索功能使用步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • vue項(xiàng)目中axios使用詳解

    vue項(xiàng)目中axios使用詳解

    這篇文章主要介紹了vue項(xiàng)目中axios使用方法以及原理介紹,如果你正巧學(xué)習(xí)這個(gè)知識(shí)點(diǎn),那么參考下吧。
    2018-02-02

最新評(píng)論