第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

關(guān)于界面主菜單生成邏輯的各種設(shè)計(jì)討論

關(guān)于界面主菜單生成邏輯的各種設(shè)計(jì)討論

拉丁的傳說 2018-11-13 17:18:10
主菜單,就是那種后臺(tái)管理系統(tǒng)里面,通過配置可以控制是否顯示某菜單,或某菜單里的某個(gè)功能。關(guān)于它的設(shè)計(jì)和實(shí)現(xiàn)方式,我個(gè)人總結(jié)大概有以下幾種。(1)用數(shù)據(jù)庫(kù)表保存一般主菜單都是樹結(jié)構(gòu),基于用傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)來保存的方案,有2種。(1-1)用1個(gè)表的方案,則表里面包含1個(gè)id和parentid來關(guān)聯(lián)父子關(guān)系。(1-2)用2個(gè)表的方案,則1個(gè)表用來記錄菜單父子關(guān)系,另一個(gè)表純記錄菜單的信息。數(shù)據(jù)傳遞方案也有2種:(1-1-1)后端查詢出數(shù)據(jù),通過后臺(tái)代碼循環(huán)構(gòu)建,或者用sql事務(wù)構(gòu)建好樹結(jié)構(gòu),再傳遞給前端(1-1-2)后端查詢出數(shù)據(jù),傳給前端,讓前端自行構(gòu)建樹結(jié)構(gòu)(2)用json保存 這個(gè)是我這個(gè)問題主要想了解的方式,不知道你們是否有用過,則直接把主菜單的父子節(jié)點(diǎn)信息構(gòu)建成json格式,存到一個(gè)配置表里,或者一個(gè)json文件里。這樣可以免去構(gòu)造樹結(jié)構(gòu)的麻煩。但是由于是純json格式,人工維護(hù)的話,數(shù)據(jù)結(jié)構(gòu)不復(fù)雜的情況下還可以,如果遇到復(fù)雜的情況,可能需要編寫一個(gè)維護(hù)界面來維護(hù),這時(shí)候由于json并沒有類似sql的查詢語法,前端(假設(shè)是js)寫增刪查改起來會(huì)特別復(fù)雜(特別是刪除)。這個(gè)。。。。不知道你們平時(shí)用的是什么方式?可以的話希望可以簡(jiǎn)要的說說,同時(shí),如果對(duì)(2)用json保存這種方式有什么看法的話,也可以說說。綜合考慮性能,可擴(kuò)展性,可維護(hù)性等等。
查看完整描述

1 回答

?
largeQ

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊

方案選型上面兩位已經(jīng)說了,這里說說數(shù)據(jù)庫(kù)表存儲(chǔ)樹結(jié)構(gòu)關(guān)系的具體實(shí)現(xiàn)。

同一張表存儲(chǔ)時(shí),僅存儲(chǔ)parent_id是不夠的??紤]一下以下的場(chǎng)景。

  1. 查詢某個(gè)節(jié)點(diǎn)的所有子孫節(jié)點(diǎn)。

  2. 查詢某個(gè)節(jié)點(diǎn)的路徑。

...

只有父id的情況下均需要遞歸查詢,查詢與構(gòu)建都非常麻煩。

一般在數(shù)據(jù)庫(kù)中存儲(chǔ)樹形結(jié)構(gòu)的數(shù)據(jù)是采用預(yù)排序遍歷樹算法,可以google一下相關(guān)的資料?;蛘咴趯蛹?jí)深度不夠深的情況下,可以參考如下的形式:樹狀結(jié)構(gòu)的數(shù)據(jù)表如何設(shè)計(jì)?


查看完整回答
反對(duì) 回復(fù) 2018-12-28
  • 1 回答
  • 0 關(guān)注
  • 544 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)