Vue Element Front-End-Anwendungsentwicklung, dynamische Menü- und Routing-Assoziationsverarbeitung

Vue Element Front-End-Anwendungsentwicklung, dynamische Menü- und Routing-Assoziationsverarbeitung

Überblick

In vielen Systemen, die ich entwickelt habe, darunter das Winform-Hybrid-Framework, das Bootstrap-Entwicklungsframework und andere Produktreihen, tendiere ich dazu, Menüs dynamisch zu konfigurieren und die Menüberechtigungen und Seitenberechtigungen der entsprechenden Rollen zu verwalten, um die Kontrolle des Systems über die Benutzerberechtigungen zu realisieren. Menüs enthalten im Allgemeinen Name, Symbol, Reihenfolge, URL-Verbindung und andere zugehörige Informationen. Für VUE+Element-Frontend-Anwendungen sollte das Prinzip ähnlich sein. Dieser Aufsatz stellt die Kombination aus dynamischer Menükonfiguration auf dem Server und der zugehörigen Verarbeitung des lokalen Routings vor, um eine dynamische Menüwartung und Anzeigeverarbeitung zu erreichen.

1. Menü- und Routing-Verarbeitung

Da das Vue-Frontend auch das Konzept des Routings einführen muss, ist Routing die entsprechende Pfadsammlung, auf die unser Frontend zugreifen kann. Routing definiert viele komplexe Informationen, die normale Menüs nicht haben, aber oft können wir diese nicht nach Belieben ändern. Daher basiert unser Ansatz auf der lokal konfigurierten Routenliste und wir verwenden die Back-End-Konfigurationsmethode für das Menü. Das Frontend erhält die Menüliste dynamisch über die Schnittstelle. Durch die Entsprechung zwischen dem Menünamen und dem Routennamen verwenden wir die Menüsammlung als Referenz, filtern dann die Liste aller lokalen statischen Routen, erhalten dann die Routenliste, auf die der Benutzer zugreifen kann, und legen die dynamische Route für das Frontend fest, wodurch die Schnittstelle entsprechend der Benutzerrolle/-berechtigung geändert wird. Ändern Sie die Menüoberfläche des Benutzers und die zugängliche Routensammlung.

Der ungefähre Betriebsablauf der Menüführung ist wie folgt

Nachfolgend werden mehrere Konzepte für dynamische Menüs, lokale Routen, Menünavigation und barrierefreie Routen in der Front-End-Schnittstelle dargestellt.

Bei der Front-End-Schnittstellenverarbeitung zeigen wir dynamische Menüinformationen über die Element-Schnittstellenkomponente an und kombinieren die Beziehung zwischen Menü und Routing, um den Prozess des Menüsprungs zur entsprechenden Ansicht zu realisieren.

2. Menü und Routenliste

Gemäß der vorherigen Einführung haben wir einige dynamische Menüinformationen definiert, die vom Server zurückgegeben werden. Diese Menüinformationen sind eine Sammlung von JSON-Objekten, wie in der folgenden Schnittstelle gezeigt.

[
  {
    ID: '1',
    pid: "-1",
    Text: 'Homepage',
    Symbol: „Dashboard“,
    Name: "Armaturenbrett"
  },
  {
    ID: '2',
    pid: "-1",
    Text: 'Produktliste',
    Symbol: 'Tabelle',
    Name: "Produkt"
  },
  {
    ID: '3',
    pid: "-1",
    Text: 'Menü der ersten Ebene',
    Symbol: "Beispiel",
    Kinder: [
      {
        ID: '3-1',
        pid: "3",
        Text: 'Sekundäres Menü 1',
        Name: "Symbol",
        Symbol: „Beispiel“
      },
      {
        ID: '3-2',
        pid: "3",
        Text: 'Sekundäres Menü 2',
        Symbol: 'Baum',
        Kinder: [
          {
            ID: '3-2-1',
            pid: '3-2',
            Text: 'Ebene 3 Menü 1',
            Name: "Formular",
            Symbol: „Formular“
          },
          {
            ID: '3-2-2',
            pid: '3-2',
            Text: 'Ebene 3 Menü 2',
            Name: 'menu1-1',
            Symbol: „Formular“
          },
          {
            ID: '3-2-3',
            pid: '3-2',
            Text: 'Ebene 3 Menü 3',
            Name: 'Menü1-2',
            Symbol: „Formular“
          },
          {
            ID: '3-2-4',
            pid: '3-2',
            Text: 'Ebene 3 Menü 4',
            Name: 'Menü1-3',
            Symbol: „Formular“
          }
        ]
      }
    ]
  },
  {
    ID: '99',
    pid: "-1",
    Text: 'Unternehmenswebsite',
    Symbol: 'Tabelle',
    Name: "externer Link"
  }
]

Das JSON des Menüs wird dynamisch basierend auf der Rolle abgerufen. Unterschiedliche Rollen entsprechen unterschiedlichen Menüsätzen. Das Menü ist eine mehrstufige Baumliste, die eine unendliche Anzahl von Anzeigeebenen definieren kann. Die JSON-formatierte Ansicht wird unten angezeigt.

Das Vue-Frontend muss alle Routen der Frontend-Seiten initialisieren und definieren, einschließlich Informationen wie dem Layout der Routing-Seite.

Wir können alle Routing-Informationen, die dem Front-End entsprechen, in einer JS-Datei definieren, wie unten gezeigt

// Definiere alle Routen dieses Systems. Die spezifischen Routen werden durch das Menü gefiltert data export const asyncRoutes = {
  'Armaturenbrett': {
    Pfad: '/dashboard',
    Komponente: Layout,
    Kinder: [{
      Pfad: 'Dashboard',
      Name: "Dashboard",
      Komponente: () => import('@/views/dashboard/index')
    }]
  },
  'Produkt': {
    Pfad: '/Produkt',
    Komponente: Layout,
    Kinder: [{
      Pfad: '/Produkt',
      Name: "Produkt",
      Komponente: () => import('@/views/Product/index')
    }]
  },

  .............................. //Teil 'icon' weglassen: {
    Pfad: '/icon',
    Komponente: Layout,
    Kinder: [{
      Pfad: '/icon',
      Name: "Symbol",
      Komponente: () => import('@/views/icons/index')
    }]
  },

  'externer Link': {
    Pfad: 'http://www.iqidi.com',
    Name: "externer Link"
  }
}

Die Routen müssen hier nicht verschachtelt sein, da die verschachtelte Beziehung für die Menüanzeige definiert werden muss.

Da unser System außerdem normal laufen muss, bevor wir uns anmelden und das dynamische Backend-Menü anfordern können, müssen wir einige grundlegende Routing-Informationen voreinstellen, z. B. die Anmeldeoberfläche, die Umleitungsseite, den Link zur Startseite usw. Daher können wir zwei Routing-Objekte trennen, um diese Informationen separat zu verwalten.

Für die Verwaltung von Routen müssen wir standardmäßig Routen erstellen, Routen zurücksetzen und dynamisch neue Routen festlegen. Wir kapseln mehrere Funktionen, um diese Vorgänge abzuwickeln.

const createRouter = () => neuer Router({
  // Modus: „Verlauf“, // Serviceunterstützung erforderlich
  scrollBehavior: () => ({ y: 0 }),
  Routen: konstanteRouten
})

const router = createRouter()

// Setzt die Route zurück Exportfunktion resetRouter() {
  const neuerRouter = createRouter()
  router.matcher = newRouter.matcher // Router zurücksetzen
}

Nachdem der Benutzer die Anmeldeschnittstelle durchlaufen hat, werden die dynamischen Routing-Informationen über die entsprechende Aktion abgerufen (beachten Sie, dass hier zuerst das dynamische Menü abgerufen und dann das lokale Routing gefiltert wird, bei dem es sich um die dynamischen Routing-Informationen handelt). Nach dem Abrufen des dynamischen Routings kann die Routing-Sammlung festgelegt werden, auf die das Front-End zugreifen kann, wie im folgenden Code gezeigt.

Mit diesen neuen Routen kann das Menü des Front-End-Systems normal funktionieren. Andernfalls kann, selbst wenn das Menü auf der Benutzeroberfläche angezeigt wird, die jeweilige Ansichtsseite nicht aufgerufen werden und es wird auf die 404-Seite gesprungen, da die Route nicht verfügbar ist.

3. Abwicklung des Login-Prozesses

Im vorherigen Abschnitt wurde der Routing-Prozess kurz vorgestellt. Eigentlich sollten wir über Routing-Informationen von der Anmeldeoberfläche aus sprechen.

Am Beispiel der Anmeldeoberfläche müssen nach der Anmeldung des Benutzers zunächst das Benutzerkonto und das Kennwort überprüft werden. Wenn dies erfolgreich ist, wird weiterhin das dem Benutzer entsprechende dynamische Menüset angefordert und über das Routing zur entsprechenden Seite oder Homepage gewechselt.

Im Modul Store/Modules/user.js wird die entsprechende Aktion zur Anmeldeverarbeitung wie folgt definiert

Wir werden hier den Prozess der Benutzeranmeldungsüberprüfung und Tokenverarbeitung ignorieren und uns auf den Prozess der dynamischen Menüanforderung und Routenfestlegung konzentrieren.

Bevor wir im Prozess die Routenankunft abfangen müssen, definieren wir die entsprechende Anforderungslogik für Routeninformationen wie unten gezeigt.

router.beforeEach(async(zu, von, weiter) => {

Im entsprechenden Modul, das die Menüweiterleitung handhabt, definieren wir einen Status, der diese wichtigen Informationen übermittelt, wie in der folgenden Statusdefinition gezeigt.

konstanter Zustand = {
  Menüelemente: [],
  Routen: [],
  Routes hinzufügen: [],
  asyncRoutes: asyncRoutes
}
// Definiert die Mutation von Routen und Menüs
const Mutationen = {
  SET_ROUTES: (Status, Routen) => {
    // var Liste = Route konvertieren(Routen)
    routes.push({ path: '*', redirect: '/404', hidden: true }) // Dies ist die Standardfehlerroute state.addRoutes = routes
    Zustand.Routen = [].concat(Routen) // konstanteRouten.concat(Routen)
  },
  SET_MENUS: (Status, Menüs) => {
    state.menuItems = Menüs
  }
}
// Definiert die Aktionsverarbeitung zum Generieren dynamischer Routen const actions = {
  Routes generieren({ commit }, Rollen) {
    gib ein neues Versprechen zurück (Auflösen => {
      getMenus().then(res => {
        const menus = res.data || [] // Menüinformationen einheitlich über die Schnittstelle abrufen const routes = []

        Menüs.fürJedes(Element => {
          filterRoutes(Routen, Element)
        })
        console.log(routes) // Routen drucken commit('SET_ROUTES', routes)
        commit('SET_MENUS', Menüs)
        auflösen (Routen)
      });
    })
  }
}

Geben Sie abschließend die entsprechenden Informationen zur JS-Definitionsmodulklasse zurück.

Standard exportieren {
  Namespace: wahr,
  Zustand,
  Mutationen,
  Aktionen
}

Bei der Front-End-Schnittstellenverarbeitung zeigen wir dynamische Menüinformationen über die Element-Schnittstellenkomponente an und kombinieren die Beziehung zwischen Menü und Routing, um den Prozess des Menüsprungs zur entsprechenden Ansicht zu realisieren.

Werfen wir einen Blick auf den dynamischen Menüeffekt, der von der Schnittstelle generiert wird.

Da die dynamische Anzeige des Menüs und die dynamische Routenführung zusammenarbeiten, ist es möglich, das dynamische Menü auf dem Frontend anzuzeigen und die zugänglichen Routen entsprechend dem Menüsatz zu aktualisieren. Die Kombination der beiden kann die entsprechende Ansichtsseite problemlos öffnen.

Lassen Sie uns noch einmal überprüfen. Der ungefähre Betriebsablauf der Menüführung ist wie folgt

Oben finden Sie detaillierte Informationen zur Verarbeitung der Zuordnung von dynamischem Menü und Routing bei der Entwicklung von Front-End-Anwendungen von Vue Element. Weitere Informationen zum dynamischen Menü und Routing von Vue Element finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Entwicklung einer Vue Element-Frontend-Anwendung zum Abrufen von Backend-Daten
  • Vue Element Front-End-Anwendungsentwicklung: Verwendung der API Store View in Vuex
  • Vorbereitung der Vue Element-Front-End-Anwendungsentwicklung für die Entwicklungsumgebung
  • So erstellen Sie ein Projekt mit Vue3+elementui plus
  • Vue-Element realisiert das Zusammenführen von Tabellenzeilendaten
  • So führen Sie Bootstrap, ElementUI und Echarts in ein Vue-Projekt ein
  • Beispielcode für vue element-ul zur Implementierung von Erweiterungs- und Reduzierfunktionen
  • Vue verwendet Element, um die Schritte Hinzufügen, Löschen, Ändern und Verpacken zu implementieren
  • vue+Element-ui implementiert ein Anmelderegistrierungsformular
  • Vue Element Front-End-Anwendungsentwicklung Menü Ressourcenverwaltung

<<:  Ausführliche Erläuterung der MySQL-Lern-Engine, Erläuterungen und Berechtigungen

>>:  Linux Yum-Paketverwaltungsmethode

Artikel empfehlen

Bringen Sie Ihnen bei, wie Sie die rekursive Methode von MySQL8 verwenden

Ich habe zuvor einen Artikel über rekursive Abfra...

Vergleich von mydumper und mysqldump in MySQL

Wenn Sie nur ein paar Tabellen oder eine einzelne...

MYSQL Eine Frage zur Verwendung von Zeichenfunktionen zum Filtern von Daten

Problembeschreibung: Struktur: test hat zwei Feld...

Detaillierte Erklärung der Verwendung und Funktion des MySQL-Cursors

[Verwendung und Funktion des MySQL-Cursors] Beisp...

MySQL 8.0-Installationstutorial unter Linux

Dieser Artikel beschreibt Ihnen, wie Sie MySQL 8....

Allgemeine Linux-Befehle chmod zum Ändern der Dateiberechtigungen 777 und 754

Der folgende Befehl wird häufig verwendet: chmod ...

Einstellungen für den Ubuntu-Boot-Autostart-Dienst

So erstellen Sie einen Dienst und starten ihn aut...

So löschen und deinstallieren Sie MySQL in Windows 10 vollständig

Vorwort Dieser Artikel enthält eine Anleitung zum...

Der Unterschied und die Verwendung von LocalStorage und SessionStorage in Vue

Inhaltsverzeichnis Was ist LocalStorage Was ist S...

Detaillierte Beschreibung des HTML-Meta-Viewport-Attributs

Was ist ein Ansichtsfenster? Mobile Browser platzi...