如何搭建乙個功能複雜的前端配置化框架 一

2021-09-13 12:38:03 字數 2168 閱讀 1245

背景

現在很多公司主要業務是c端,擁有巨大使用者和流量的同時,b端業務不可或缺,crm,cms,運營配置化管理平台,資料視覺化平台,各種審批平台。這些系統都有幾個共同的特點:需求多,變化快,查詢頁,列表頁,提交頁面。而這些頁面都是相似的,ui要求低,功能簡單。所以我們能不能開發一套配置化平台解放生產力呢?答案是肯定的。我們只需要配置一下json就能生成乙個頁面,這個如何實現呢?我們慢慢道來......

技術選型

nodejs + vue/react + json schema

框架搭建

分析:頁面只需乙個容器,可以理解為乙個div,在載入頁面的時候,非同步去分布式配置中心(redis或其他)獲取頁面配置,頁面配置單純的就是個json字串。配置資料取出來之後,我們開始解析json,包括json的正確性,合法性等。最後再通過vue元件的render方法渲染頁面,看到這裡,很多人會有如下的疑惑:

json格式如何定義?

json如何和元件對應起來?

元件是怎麼渲染出來的?

元件間如何通訊?

支援複雜的邏輯互動嗎?

框架創新及優化

1.支援無限級元件巢狀渲染

2.簡化元件間通訊

3.頁面配置實時預覽

疑問解答

1.json格式如何定義?

}}

2.json如何和元件對應起來? 我們先看乙個自定義元件form.vue的**:

新建元件庫模組componentslib.js,我們把自定義元件通過這個模組暴露出去:

/**

* 引入所有公共元件庫

*/import form from './form.vue'

module.exports =

3.元件是怎麼渲染出來的

寫了元件和暴露出元件之後,我們怎麼渲染出來呢?通過vue.component定義乙個全域性元件:
import vue from 'vue'

import componentslib from './componentslib' // 暴露出來的元件庫

/** * 注入全域性的頁面容器元件

* 所有元件必須包裹在乙個容器元件中

*/vue.component('page-container', ,

methods: , this.deepchildren(pageconfig.children, createelement))}},

/*** 遞迴遍歷所有子元件

* @param {} pageconfig

* @param createelement

*/deepchildren (pageconfig, createelement)

if (pageconfig) , this.deepchildren(item.children, createelement)))}}

return children}}

},props:

}})

可以看出主要的一點,我的元件通過元件庫暴露出來,並且每個元件都有乙個唯一的id,而我在json中配置的時候uniqueid就是對應我元件的唯一id,這樣通過vue.component的render方法,可以遞迴遍歷渲染出我的元件,這樣就能實現元件的無限級巢狀。

效果預覽

搭建乙個Vue前端專案

一 安裝環境 2.檢查是否安裝成功 如果輸出版本號,說明我們安裝node環境成功 3.輸入 npm v 測試是否已經成功安裝 npm,出現版本號就表示成功安裝 另外 可以安裝cnpm npm install g cnpm registry 檢查安裝結果 npm 全域性模組的存放路徑以及cache的路...

如何搭建乙個團隊 一

現在的社會不再是英雄獨行的社會,我們想做成一件事,往往需要乙個團隊的配合才能完成,只是根據專案的大小,這個團隊有大有小而已。無論團隊大小,本質上都是一樣。建設乙個團隊需要做的事情一件不能少,但是人數多的團隊與人數少的團隊在具體的處理上有一些差別。根據自己的經驗,我習慣將6人 12人作為兩個分界線。沒...

前端如何定義乙個常量

為什麼會這樣?實際上,const定義的變數儲存的是指向實際資料的指標,對於基本資料型別string boolean number undefined null symbol而言,其值儲存在棧記憶體中的簡單資料段,按值訪問,就是等同於常量。但是相對於引用資料型別而言,const只能保證指向儲存在堆記憶...