中文字幕 日本 在线 高清,精品久久久久久久久久久国产字幕,漂亮人妻洗澡被公强日日躁,西西4444wwww大胆视频

手把手帶你開發(fā)一個(gè)低代碼可視化平臺(tái)(一)(低代碼開發(fā)平臺(tái)設(shè)計(jì))


手把手帶你開發(fā)一個(gè)低代碼可視化平臺(tái)(一)(低代碼開發(fā)平臺(tái)設(shè)計(jì))

起因

我在月初開源的商城零代碼可視化搭建平臺(tái)Mall-Cook受到大家喜愛,使我深受鼓勵(lì),謝謝大佬們的支持。本著授人以魚不如授人以漁思想,決定在項(xiàng)目新建shelf分支,從零開發(fā)一個(gè)"干凈"的可視化搭建平臺(tái),帶大家開發(fā)一個(gè)自己的可視化搭建平臺(tái)。

手把手帶你開發(fā)一個(gè)低代碼可視化平臺(tái)(一)(低代碼開發(fā)平臺(tái)設(shè)計(jì))

可視化搭建核心

架構(gòu)

先看一下我理解的無代碼可視化搭建平臺(tái)架構(gòu),可視化搭建平臺(tái)主要有兩塊:

  • 項(xiàng)目拖拽搭建平臺(tái)的構(gòu)建
  • 物料接入平臺(tái)流水線的構(gòu)建

手把手帶你開發(fā)一個(gè)低代碼可視化平臺(tái)(一)(低代碼開發(fā)平臺(tái)設(shè)計(jì))

核心

可視化搭建的核心是什么?

開發(fā)搭建平臺(tái)使我們搭起了可視化構(gòu)建的架子,接下來只需要根據(jù)實(shí)際使用場(chǎng)景更新物料庫"運(yùn)營(yíng)"平臺(tái)。 而在更新物料庫時(shí)(老物料的迭代與新物料的開發(fā)),我們也需要同步修改平臺(tái)來兼容物料庫。那怎么解決這個(gè)問題呢?

手把手帶你開發(fā)一個(gè)低代碼可視化平臺(tái)(一)(低代碼開發(fā)平臺(tái)設(shè)計(jì))

我的解決辦法是,利用Json Schema協(xié)議規(guī)范Json的作用,用規(guī)范的Json來描述物料,然后用物料屬性解析器來解析、構(gòu)造物料的屬性面板,我們更新物料庫時(shí)只需要修改對(duì)應(yīng)Json即可。最后提供Schema生成器可視化生成Json,避免用戶手動(dòng)修改Json,完成一整條物料接入平臺(tái)流水線的構(gòu)建。

這時(shí)我們?cè)倩氐絾栴},我認(rèn)為可視化搭建的核心是一套規(guī)范!

在平臺(tái)中我們利用Schema協(xié)議定義了物料屬性規(guī)范,然后遵循規(guī)范構(gòu)建一條標(biāo)準(zhǔn)接入的流水線。我們?cè)陂_發(fā)同理可以定義其他規(guī)范,完成組件交互、頁面生命周期遠(yuǎn)程接口調(diào)用等標(biāo)準(zhǔn)流水線(此平臺(tái)為無代碼平臺(tái),開發(fā)低代碼平臺(tái)需要上述功能)。

畫虎畫皮難畫骨,我認(rèn)為這才是可視化搭建的難點(diǎn)!

開發(fā)拖拽搭建面板

手把手帶你開發(fā)一個(gè)低代碼可視化平臺(tái)(一)(低代碼開發(fā)平臺(tái)設(shè)計(jì))

我們使用的拖拽插件是vuedraggable,主要邏輯為拖拽模板物料到頁面面板,深拷貝物料配置數(shù)據(jù)到頁面配置中。

核心代碼

<!-- 物料模板列表 --> <draggable v-model="widgets" // 拖拽列表數(shù)據(jù)源 :options="{ group:{ name: 'itxst', // 可拖拽列組,相同表名可相互推拽 pull: 'clone' // 拖拽模板物料,復(fù)制到目標(biāo)列表 }, sort: false // 是否可推拽排序 }" :clone="handleClone" // 復(fù)制模板物料執(zhí)行方法 animation="300" // 動(dòng)畫延遲 > <div v-for="(item, index) in widgets" :key="index" class="control-widgets-item" > <i class="iconfont" :class="item.icon"></i> <span class="f13">{{ item.label }}</span> </div> </draggable>

<!-- 頁面面板 --> <draggable v-model="mList" // 拖拽列表數(shù)據(jù)源 group="itxst" // 可拖拽列組,相同表名可相互推拽 ghostClass="ghost" // 拖動(dòng)元素的占位樣式class chosenClass="chosen" // 選中目標(biāo)的樣式class selector="selector" :animation="500" // 動(dòng)畫延遲 :sort="true" // 是否可推拽排序 class="panel" > <component v-for="item in mList" :key="item.id" :is="item.component" v-bind="item" ></component> </draggable>

// 拷貝物料模板 handleClone(cmp) { return { ...this.$cloneDeep(model), // 深拷貝物料模板 id: this.$getRandomCode(8), // 生成物料id },

開發(fā)可嵌套物料

手把手帶你開發(fā)一個(gè)低代碼可視化平臺(tái)(一)(低代碼開發(fā)平臺(tái)設(shè)計(jì))

想要實(shí)現(xiàn)可嵌套物料主要有三點(diǎn):

  • 物料中包含slot,已供子物料存放
  • 物料配置中增加children屬性,用于存放子物料配置
  • 遞歸渲染物料實(shí)現(xiàn)無限層級(jí)嵌套

核心代碼

<!-- 遞歸可嵌套組件 --> <draggable v-model="list" group="itxst" ghostClass="ghost" chosenClass="chosen" selector="selector" :animation="500" :sort="true" :class="[isWidget ? 'nest-child' : 'nest-area']" > <component v-for="item in list" :key="item.id" :is="item.component" v-bind="item" > // 包含slot的組件才能進(jìn)行嵌套渲染 <ControlNestWidget :widgets.sync="item.children" // 子物料列表 :isWidget="true" // 是否為子物料 ></ControlNestWidget> </component> </draggable>

開發(fā)物料容器

手把手帶你開發(fā)一個(gè)低代碼可視化平臺(tái)(一)(低代碼開發(fā)平臺(tái)設(shè)計(jì))

接下來我們?yōu)轫撁娴奈锪霞右粋€(gè)保姆工具欄,使用容器組件可以解耦代碼功能,功能如下所示

手把手帶你開發(fā)一個(gè)低代碼可視化平臺(tái)(一)(低代碼開發(fā)平臺(tái)設(shè)計(jì))

<!-- 物料操作容器 --> <div class="shape" @click.stop="setcurComponent(widget)" ref="shape"> <!-- 選中組件高亮 --> <div v-if="isCurComponent(widget.id)" class="shape-solid event-none"></div> <!-- 組件工具欄 --> <div v-if="show" class="shape-tab" :style="{ right: getRightStyle() }"> <!-- 選中顯示刪除按鈕 --> <template v-if="isCurComponent(widget.id)"> <i class="iconfont icon-shanchu tab-icon f16" @click.stop="delComponent(chontrol.widgets, widget.id)" ></i> </template> <!-- 未選擇顯示物料名 --> <span v-else>{{ widget.label }}</span> </div> <!-- 插槽 --> <slot></slot> </div>

<!-- 使用物料容器 --> <widget-shape v-for="item in list" :key="item.id" :widget="item"> <component :is="item.component" v-bind="item" ></component> </widget-shape>

因?yàn)橛星短捉M件,所以刪除物料時(shí)應(yīng)遞歸遍歷刪除

// 刪除物料 delComponent(list, id) { // 遍歷查找目標(biāo)下標(biāo) let index = list.reduce((pre, cur, i) => { return cur.id == id ? i : pre; }, -1); // 找到目標(biāo),刪除物料 if (index >= 0) { list.splice(index, 1); } else { // 遞歸子物料 list .filter((c) => c.children) .forEach((c) => { this.delComponent(c.children, id); }); } }

下一節(jié)預(yù)告

我們已經(jīng)開發(fā)了可視化搭建的架子,下一節(jié)會(huì)講述:

  • 使用json描述物料
  • 開發(fā)物料屬性解析器,解析生成屬性面板
  • 開發(fā)屬性面板基礎(chǔ)類型組件(string、number等

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。

(0)
上一篇 2024年7月6日 上午11:00
下一篇 2024年7月6日 上午11:12

相關(guān)推薦

  • 廣元項(xiàng)目績(jī)效管理系統(tǒng)

    廣元項(xiàng)目績(jī)效管理系統(tǒng) 廣元項(xiàng)目績(jī)效管理系統(tǒng)是一套針對(duì)項(xiàng)目進(jìn)行績(jī)效管理的系統(tǒng),旨在提高項(xiàng)目的效率和質(zhì)量,減少時(shí)間和成本的浪費(fèi)。該系統(tǒng)采用了現(xiàn)代化的績(jī)效管理工具和技術(shù),能夠幫助項(xiàng)目經(jīng)理…

    科研百科 2024年12月19日
    2
  • 審計(jì)觀察 – 關(guān)于上市公司內(nèi)部審計(jì)工作的思考(上市公司內(nèi)部審計(jì)問題研究)

    內(nèi)部審計(jì)對(duì)上市公司防范風(fēng)險(xiǎn)和提升管理水平、促進(jìn)資本市場(chǎng)穩(wěn)定健康發(fā)展具有重要作用。近年來,審計(jì)內(nèi)外部環(huán)境不斷發(fā)展變化,特別是2018年1月《審計(jì)署關(guān)于內(nèi)部審計(jì)工作的規(guī)定》(簡(jiǎn)稱《規(guī)定…

    科研百科 2024年2月9日
    119
  • 金山企業(yè)殺毒

    金山企業(yè)殺毒: 企業(yè)安全的新選擇 隨著企業(yè)規(guī)模的不斷擴(kuò)大和業(yè)務(wù)范圍的不斷提升,企業(yè)安全問題也越來越重要。傳統(tǒng)的殺毒軟件已經(jīng)無法滿足現(xiàn)代企業(yè)的需求,因此,金山企業(yè)殺毒成為了企業(yè)安全領(lǐng)…

    科研百科 2024年12月3日
    2
  • 科研項(xiàng)目招投資商

    科研項(xiàng)目招投資商: 探索未來科技的新篇章 隨著科技的不斷發(fā)展,科研項(xiàng)目已經(jīng)成為了投資商們關(guān)注的熱點(diǎn)。在這個(gè)競(jìng)爭(zhēng)激烈的時(shí)代,科研項(xiàng)目的發(fā)展不僅能夠?yàn)橥顿Y者帶來豐厚的回報(bào),還能夠?yàn)樯鐣?huì)…

    科研百科 2025年4月16日
    2
  • 科研項(xiàng)目參與人條件

    科研項(xiàng)目參與人條件 科研項(xiàng)目的參與人條件是確保項(xiàng)目成功的關(guān)鍵因素之一。一個(gè)有效的科研項(xiàng)目需要由一群有經(jīng)驗(yàn)和能力的人組成,這些人應(yīng)該具有不同的技能和知識(shí),以確保項(xiàng)目能夠按時(shí)完成,并且…

    科研百科 2025年3月13日
    1
  • 科研項(xiàng)目移動(dòng)硬盤報(bào)銷

    科研項(xiàng)目移動(dòng)硬盤報(bào)銷 隨著科技的不斷發(fā)展,科研項(xiàng)目中的文件管理變得越來越復(fù)雜。為了便于管理和備份數(shù)據(jù),許多研究人員都會(huì)使用移動(dòng)硬盤來存儲(chǔ)他們的工作文件。然而,在存儲(chǔ)過程中,也會(huì)出現(xiàn)…

    科研百科 2025年4月19日
    1
  • 科研項(xiàng)目新產(chǎn)品的驗(yàn)收

    科研項(xiàng)目新產(chǎn)品的驗(yàn)收 隨著科技的不斷發(fā)展,科研項(xiàng)目新產(chǎn)品的驗(yàn)收已經(jīng)成為了一個(gè)備受關(guān)注的話題。在驗(yàn)收過程中,需要對(duì)產(chǎn)品進(jìn)行全面測(cè)試和評(píng)估,以確保其達(dá)到預(yù)設(shè)的標(biāo)準(zhǔn)和要求。本文將介紹科研…

    科研百科 2025年4月16日
    3
  • 20個(gè)架構(gòu)師必備的工具,讓你的項(xiàng)目更易于管理(20個(gè)架構(gòu)師必備的工具,讓你的項(xiàng)目更易于管理)

    20個(gè)架構(gòu)師必備的工具,讓你的項(xiàng)目更易于管理 隨著軟件行業(yè)的快速發(fā)展,架構(gòu)師的角色變得越來越重要。作為項(xiàng)目的領(lǐng)導(dǎo)者,架構(gòu)師需要負(fù)責(zé)制定項(xiàng)目的整體架構(gòu)和設(shè)計(jì)方案,并確保這些方案符合業(yè)…

    科研百科 2024年6月11日
    48
  • 調(diào)查科研項(xiàng)目預(yù)期結(jié)果

    調(diào)查科研項(xiàng)目預(yù)期結(jié)果 隨著科技的不斷進(jìn)步,科研項(xiàng)目也在不斷地進(jìn)行中。這些項(xiàng)目旨在解決各種問題,例如環(huán)境保護(hù)、能源消耗、醫(yī)療保健等。但是,這些項(xiàng)目的預(yù)期結(jié)果并不一定總是能夠完全實(shí)現(xiàn)。…

    科研百科 2025年3月28日
    2
  • 科學(xué)實(shí)施計(jì)劃包括什么

    科學(xué)實(shí)施計(jì)劃包括什么 科學(xué)實(shí)施計(jì)劃是科學(xué)項(xiàng)目執(zhí)行的關(guān)鍵步驟之一。它旨在確保科學(xué)項(xiàng)目的計(jì)劃和目標(biāo)得到充分實(shí)現(xiàn),并為項(xiàng)目提供清晰的指導(dǎo)。科學(xué)實(shí)施計(jì)劃通常包括以下方面: 1. 項(xiàng)目概述:…

    科研百科 2024年10月11日
    9