Kapseln Sie die Navigationsleistenkomponente mit Vue

Kapseln Sie die Navigationsleistenkomponente mit Vue

Vorwort: Die vollständige Kapselung eines Funktionsmoduls mithilfe komponentenbasierter Ideen, wie z. B. einer Navigationsleiste, bietet viele Vorteile sowohl für unsere Entwicklungsideen als auch für die Effizienz. Bei der Entwicklung sollten wir versuchen, so weit wie möglich komponentenbasierte Entwicklungsideen zu verwenden und nicht den gesamten Code in dieselbe VUE-Datei zu schreiben, was die Lesbarkeit des Codes erheblich verbessern kann.

Kapselung der Navigationsleiste

Die Hauptidee besteht darin, die roten Teile als Komponenten zu behandeln, die sich nur in Bild und Text unterscheiden. Daher können wir sie in dieselbe Komponente kapseln und dann die Bild- und Textinformationen an die Komponente übergeben (Slots können verwendet werden).

//TabBarItem.vue
<Vorlage>
  <div Klasse="tabBarItem" @click="tabBarItemClick">
    <div v-if="!istAktiv">
      <slot name="item-icon"></slot>
    </div>
    <div v-sonst>
      <slot name="item-icon-active"></slot>
    </div>
    <div :style="istAktiveFarbe">
      <slot name="item-text"></slot>
    </div>
  </div>
</Vorlage>

<Skript>
Standard exportieren {
  Name:"TabBarItem",
  Requisiten:{
    Pfad:String,
    aktiveFarbe:{
      Typ: Zeichenfolge,
      Standard: „rosa“
    }
  },
  berechnet:{
    istAktiv:{
      erhalten(){
        gib dies zurück.$route.path.indexOf(this.path)!==-1;
      },
      Satz(){}
    },
    istActiveColor(){
      gib dies zurück.istAktiv?{color:this.activeColor}:{}
    }
  },
  Methoden:{
    tabBarItemClick(){
      dies.$router.push(dieser.pfad);
    }
  }
}
</Skript>

<Stilbereich>
.tabBarItem{
  biegen: 1;
  Schriftgröße: 12px;
}
.tabBarItem img{
  Rand oben: 3px;
  Breite: 24px;
  Polsterung unten: 3px;
}
</Stil>

Der nächste Schritt besteht darin, einen Container zu kapseln, der diese vier Optionen an derselben Stelle platziert.

//TabBar.vue
<Vorlage>
  <div Klasse="tabBar">
    <Steckplatz></Steckplatz>
  </div>
</Vorlage>

<Skript>
Standard exportieren {
  Name: „TabBar“
}
</Skript>

<Stilbereich>
.tabBar{
  Anzeige: Flex;
  Höhe: 49px;
  Position: fest;
  links: 0;
  rechts: 0;
  unten: 0;
  Textausrichtung: zentriert;
  Kastenschatten: 0px -1px 1px rgba(100, 100, 100, .1);
  Hintergrundfarbe: #f6f6f6;
}

</Stil>

Der nächste Schritt besteht darin, es zu verwenden und unterschiedliche Bilder und Textinformationen in jeden unterschiedlichen TabBarItem-Slot zu schreiben.

//MainTabBar.vue
<Vorlage>
  <div Klasse="Haupt-TabBar">
    <Tabulatorleiste>
      <tab-bar-item Pfad="/home" activeColor="#ff8198">
        <img src="~assets/img/tabbar/home.svg" alt="" slot="item-icon">
        <img src="~assets/img/tabbar/home_active.svg" alt="" slot="item-icon-active">
        <div slot="item-text">Startseite</div>
      </tab-bar-item>
      <tab-bar-item path="/Kategorie" activeColor="#ff8198">
        <img src="~assets/img/tabbar/category.svg" alt="" slot="item-icon">
        <img src="~assets/img/tabbar/category_active.svg" alt="" slot="item-icon-active">
        <div slot="item-text">Kategorie</div>
      </tab-bar-item>
      <tab-bar-item path="/cart" activeColor="#ff8198">
        <img src="~assets/img/tabbar/shopcart.svg" alt="" slot="item-icon">
        <img src="~assets/img/tabbar/shopcart_active.svg" alt="" slot="item-icon-active">
        <div slot="item-text">Warenkorb</div>
      </tab-bar-item>
      <tab-bar-item path="/profil" activeColor="#ff8198">
        <img src="~assets/img/tabbar/profile.svg" alt="" slot="item-icon">
        <img src="~assets/img/tabbar/profile_active.svg" alt="" slot="item-icon-active">
        <div slot="item-text">Mein</div>
      </tab-bar-item>
    </tab-bar>
  </div>
</Vorlage>

<Skript>
TabBar aus „Komponenten/Allgemein/Tabbar/TabBar“ importieren
importiere TabBarItem aus „Komponenten/Inhalt/Tabbar/TabBarItem“
Standard exportieren {
  Name:"Haupt-Tableiste",
  Komponenten: {
    TabBar,
    TabBarItem
  }
}

</Skript>
<Stil>

</Stil>

Die Navigationsleiste wird im Allgemeinen auf der Startseite verwendet, daher haben wir diese Navigationsleiste in App.vue eingefügt.

<Vorlage>
  <div id="app">
    <Haupt-Tab-Leiste></Haupt-Tab-Leiste>
  </div>
</Vorlage>

<Skript>
importiere MainTabBar aus „Komponenten/Inhalt/Tabbar/MainTabBar“;
Standard exportieren {
  Name: "App",
  Komponenten: {
    Haupt-Tab-Leiste
  }
}

Zusammenfassung: Es scheint, dass wir 3 Dateien verwenden, um eine Navigationsleiste zu schreiben, was zwar mühsam erscheinen mag, aber auch die Lesbarkeit des Codes erheblich verbessert. Wenn wir die Navigationsleiste noch an anderer Stelle im Projekt verwenden müssen, müssen wir nur eine Datei ähnlich wie MainTabBar erstellen und dann die gewünschten Bilder und Texte hineinschreiben. Auch wenn sie in anderen Projekten verwendet wird, können wir die Datei direkt kopieren und direkt verwenden. Wir müssen nicht einmal CSS-Stile schreiben, was unsere Entwicklungseffizienz erheblich verbessert.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Erfahren Sie, wie Sie in fünf Minuten mit vue-cli3 ein Projekt erstellen (Anleitung für Anfänger)
  • Einige Tipps zur Verwendung von Less in Vue-Projekten
  • So wenden Sie TypeScript-Klassen in Vue-Projekten an
  • Vue.js implementiert Erläuterungen zum Tab-Umschalten und Farbwechseln
  • Detaillierte Erläuterung des Vuex-Gesamtfalls
  • Klicken Sie in Vue auf den Umschaltknopf, um die Schaltfläche zu aktivieren und dann zu deaktivieren.
  • Fallzusammenfassung zur Vue-Komponentenkommunikationsmethode
  • Detaillierte Erklärung zur Verwendung von Scoped Slots in Vue.js-Slots
  • Einige Vorschläge zur Lesbarkeit des Vue-Codes

<<:  Detaillierte Erläuterung der Docker-Container-Cross-Host-Multi-Netzwerksegment-Kommunikationslösung

>>:  Strategie zur Optimierung der Leistung von MySQL-Datenbankabfragen

Artikel empfehlen

Projektpraxis zum Bereitstellen von Docker-Containern mit Portainer

Inhaltsverzeichnis 1. Hintergrund 2. Bedienungssc...

Wie MySQL Milliarden von Datenverkehr unterstützt

Inhaltsverzeichnis 1 Master-Slave-Lese-/Schreibtr...

js zum Implementieren von Details im Datei-Upload-Stil

Inhaltsverzeichnis 1. Übersicht 2. Parameter zum ...

Details zur Ereignisbindung reagieren

Inhaltsverzeichnis Ereignisbindung von Klassenkom...

CSS -webkit-box-orient: vertikale Eigenschaft nach der Kompilierung verloren

1. Ursache Die Anforderung besteht darin, zwei Ze...

Detaillierte Erläuterung der Kubernetes-Pod-Orchestrierung und des Lebenszyklus

Inhaltsverzeichnis K8S Master Grundlegende Archit...

So erweitern Sie den Speicherplatz eines Linux-Servers

Inhaltsverzeichnis Vorwort Schritt Vorwort Heute ...

Web-Frontend-Entwicklung CSS-bezogene Teamzusammenarbeit

Die Frontend-Entwicklungsabteilung wächst, die Mi...

So schreiben Sie den Stil einer CSS3-Tianzi-Rasterliste

In vielen Projekten ist es notwendig, die Funktio...

So ändern Sie die Farbe der gesamten Zeile (tr), wenn die Maus in HTML stoppt

Verwenden Sie reines CSS, um die Hintergrundfarbe...

vue cli3 implementiert die Schritte der Verpackung nach Umgebung

Das mit CLI3 erstellte Vue-Projekt wird als Nullk...

VUE + SpringBoot implementiert die Paging-Funktion

Dieser Artikel stellt hauptsächlich vor, wie pagi...