Das Hauptmenü ist eine Art Hintergrundverwaltungssystem, mit dem Sie durch Konfiguration steuern können, ob ein bestimmtes Menü oder eine bestimmte Funktion in einem bestimmten Menü angezeigt werden soll.
Bezüglich der Konzeption und Umsetzung fällt mein persönliches Fazit wie folgt aus.
(1)
Speichern mit einer Datenbanktabelle
Im Allgemeinen ist das Hauptmenü eine Baumstruktur. Es gibt zwei Lösungen, die auf dem Speichern mit einer herkömmlichen relationalen Datenbank basieren.
(1-1)
Bei Verwendung einer Tabellenlösung enthält die Tabelle eine ID und eine Eltern-ID, um die Eltern-Kind-Beziehung zuzuordnen.
(1-2)
Bei einer Zwei-Tabellen-Lösung wird eine Tabelle zum Aufzeichnen der Eltern-Kind-Beziehung des Menüs verwendet, und die andere Tabelle zeichnet lediglich die Menüinformationen auf.
Es gibt auch 2 Datenübertragungslösungen:
(1-1-1)
Das Backend fragt die Daten ab und erstellt sie über die Hintergrundcodeschleife oder verwendet SQL-Transaktionen zum Aufbau der Baumstruktur und übergibt sie dann an das Frontend
(1-1-2)
Das Backend fragt die Daten ab und übergibt sie an das Frontend, sodass das Frontend die Baumstruktur selbst aufbauen kann
(2)
In JSON speichern
Dies ist die Hauptmethode, die ich über dieses Problem wissen möchte. Ich weiß nicht, ob Sie es zuvor verwendet haben. Erstellen Sie dann direkt die Informationen zu übergeordneten und untergeordneten Knoten im JSON-Format in einer Konfigurationstabelle oder einer JSON-Datei. Dies erspart Ihnen die Mühe, eine Baumstruktur zu erstellen. Da es sich jedoch um ein reines JSON-Format handelt, ist die manuelle Wartung in Ordnung, wenn die Datenstruktur nicht komplex ist. Wenn Sie auf eine komplexe Situation stoßen, müssen Sie möglicherweise eine Wartungsschnittstelle schreiben, um diese zu verwalten Eine Abfragesyntax ähnlich der von SQL, dem Frontend (vorausgesetzt, es ist js). Es wird besonders kompliziert sein, Hinzufügungen, Löschungen zu schreiben und Änderungen (insbesondere Löschungen) zu überprüfen.
Das. . . . Ich weiß nicht, welche Methode Sie normalerweise verwenden? Ich hoffe, dass Sie, wenn möglich, kurz darüber sprechen können. Wenn Sie jedoch eine Meinung zu dieser Methode haben, können Sie auch darüber sprechen.
Unter Berücksichtigung von Leistung, Skalierbarkeit, Wartbarkeit usw. (2)用json保存
方案要根据技术来选,就你给出的两种方案来说,第一种更适合关系型数据库实现,第二种更适合 NoSQL 数据库实现。
综合来看更推荐第一种方案,将菜单结构 flatten 在后期设计用户、用户组、权限等模块的时候会比较方便。而使用 JSON 的方案进行这些操作就会比较复杂。