Backend-Routing: Die URL-Anforderungsadresse entspricht den Ressourcen auf dem Server und je nach Anforderungsadresse werden unterschiedliche Ressourcen zurückgegeben. Front-End-Routing: In einer Einzelseitenanwendung ändert sich der angezeigte Inhalt basierend auf vom Benutzer ausgelösten Ereignissen durch Ändern der URL, ohne dass die Seite aktualisiert werden muss. 1. Implementierungsprinzip des Front-End-RoutingsURL-Hash-Muster Beim Ändern des Ändern Sie den Hashwert der Seite über Wir haben festgestellt, dass die Seite nicht aktualisiert wird. Im
Die drei wichtigsten Front-End-Frameworks verfügen alle über ein eigenes Routing: 2. Grundlegende Verwendung von vue-Router2.1. Installationnpm installiere vue-router --save Die Voraussetzung für die Verwendung von Importieren Sie vue-router in index.js im Router-Ordner Vue von „vue“ importieren VueRouter von „vue-router“ importieren Vue.use(VueRouter) //Referenz Vue-Router-Plugin 2.2. Routing konfigurieren//Konfiguriere die Beziehung zwischen Routing und Komponenten const route=[ { Weg: '/', // Beim Zugriff auf '/' wird die Route auf die neue Adresse '/home' umgeleitet. Umleitung: '/home', }, { Pfad: '/home', Komponente: Zuhause, }, { Pfad: '/login', Komponente: Login, }, ] 2.3. Instanziierungconst router = neuer VueRouter({ Modus: "Verlauf", //Modusrouten festlegen }); 2.4. Montagerouten Gehen Sie zu let app = neues Vue({ el:'#app', Daten:{}, // Am Vue-Router einhängen, }) 2.5. Router-Link und Router-View zur Seite hinzufügen<!-- Route hinzufügen --> <router-link to="/home">Zuhause</router-link> <router-link to="/about">Über</router-link> <!-- Routing-Inhalt anzeigen--> <Router-Ansicht /> Standardmäßig wird <router-link to="/home">Zuhause</router-link> // Als <a href="#/home" rel="external nofollow" >Homepage</a> rendern
3. Router-Modus Es gibt zwei Routing-Modi: 3.1 Hash-Modus Der Anker in 3.2 Verlaufsmodus Der gewünschte Modus kann im const router = neuer VueRouter({ Modus: „Verlauf“ }) 4. Router-Link-Eigenschaften Standardmäßig wird 4.1. Tag-Attribut Das Tag-Attribut wird verwendet, um den Rendering-Typ des Router-Link-Tags festzulegen. Wenn wir beispielsweise <router-link to="/home" tag="button">Zuhause</router-link> Überprüfen Sie das gerenderte Element und Sie werden feststellen, dass es zu einem Außer der 4.2. Attribut ersetzen replace entspricht <router-link to="/home" replace>Zuhause</router-link> 4.3, aktive Klasse <a href="#/" rel="externes Nofollow" aria-current="Seite" Klasse = "Router-Link-exakt-aktiv Router-Link-aktiv"> Startseite</a> Um den aktuellen Elementstil festzulegen, müssen Sie ihn auf „ Legen Sie die aktive Klasse fest, beispielsweise: <router-link to="/" active-class="active">Zuhause</router-link> // Der Klassenname router-link-active wird durch active ersetzt Wenn Sie die globalen const router = neuer VueRouter({ Routen, Modus: "Hash", linkActiveClasses: 'active' //Klassennamen einheitlich festlegen}) 5. vue-Rrouter-Seitensprungmethode5.1. Router-Link-Implementierung// Einfaches Schreiben von <router-link to="/">Home</router-link> //Dynamischen Pfad verwenden <router-link :to="{ Pfad : '/' }"></router-link> Sie können den Pfad oder den Namen verwenden // Mit Parameterübergabe zu 1 springen <Router-Link: zu = " { Name:'home', Parameter:{ ID:'123' , Name:'gq' }} "> </Router-Link> // Springe mit dem Parameter <router-link :to=" { Pfad:'/', Abfrage:{ ID:'123' , Name:'gq' }} "> </Router-Link> 5.2. Weiterleitung über js// Einfach schreiben: this.$router.push({ path:'/' }) // push ist das gleiche wie history.pushState // Sprung mit Parametern this.$router.push({ Name: 'home', Parameter: {ID:'123', Name:'gq'} }) //Mit mehreren Parametern this.$router.push({ Name: "Heimat", Parameter: { ID:'123' , Name:'gq' }, Abfrage: { plan:'privat' } }) 6. Dynamisches Routing In manchen Fällen ist der Konfigurieren von Routen Router:[ { Pfad: '/user/:id', Komponente:()=>{ import('../views/user.vue') } } ] Routen hinzufügen <router-link to="/user/123"> Benutzer:123 </router-link> <router-link to="/user/456"> Benutzer:456 </router-link> //Den ID-Wert dynamisch festlegen <router-link :to=" '/user/'+id "> user:{{ id }} </router-link> Holen Sie sich den dynamischen Wert dahinter dies.$route.params.id Die ID hier ist die ID, die in der Konfigurationsroute festgelegt wurde. Achten Sie darauf, dass sie konsistent bleibt. Methode 2: Verwenden Sie eine Abfrage, um Parameter zu übergeben <router-link zu="/user?id=123"></router-link> //Beim Abrufen des Wertes this.$route.query.id Darüber hinaus können 7. Lazy Loading von RoutenLazy Loading bedeutet Laden, wenn es verwendet wird, und Nichtladen, wenn es nicht verwendet wird. Beim Verpacken und Erstellen einer Anwendung wird das JS-Paket sehr groß, was sich auf die Ladegeschwindigkeit auswirkt. Wenn wir die Komponenten, die verschiedenen Routen entsprechen, in verschiedene Codeblöcke aufteilen und dann beim Zugriff auf die Route die entsprechenden Komponenten laden können, ist dies effizienter. Was genau bewirkt das Lazy Loading von Routen? Die Hauptfunktion besteht darin, die der Route entsprechenden Komponenten in einen JS-Codeblock zu packen und das entsprechende JS nur zu laden, wenn auf die Route zugegriffen wird. //Direkter Verweis auf „import Home“ von „./component/home“ const Routen = [ { Pfad: „/home“, Komponente:Home } ] //Verzögertes Laden const routes = [ { Pfad: „/home“, Komponente:()=>{ import('./Komponente/home') } } ] 8. Verschachtelte RoutenIn praktischen Anwendungen besteht es normalerweise aus mehreren Schichten verschachtelter Komponenten. Implementierungsschritte: Erstens: Erstellen Sie die entsprechende Unterkomponente und konfigurieren Sie die entsprechende Unterroute in der Routenzuordnung. Zweitens: Verwenden Sie { Pfad: "/body", Komponente: ()=> import( "../components/bodyLayout.vue"),, Kinder:[ { Pfad: "Manager", Komponente: ()=> import( "../components/blankView.vue"), Kinder:[ { Pfad: "Benutzer", Komponente: ()=> import( "../views/manager/user.vue") }, ] }, ] } Beim Zugriff auf die Hinweis: Fügen Sie beim Festlegen des Pfads für verschachtelte Routen kein "/" hinzu, da sich sonst die Route ändert. { Pfad: "/user", Komponente: ()=> import( "../views/manager/user.vue") } //An dieser Stelle wird der Zugriffspfad zu "/user" 9. Unterschied zwischen Router und Route Versuchen Sie, Wir stellten fest, dass die beiden Ergebnisse genau gleich waren. Daher fällt es uns nicht schwer, die folgende Bedeutung zu verstehen. Route ist das aktuell aktive Routenobjekt, das die aktuellen Routeninformationen enthält. Über dieses Objekt können 10. Routing-WächterWarum Navigationswächter verwenden? Betrachten wir eine Anforderung: Wie ändert sich in einer SPA-Anwendung der Webseitentitel, wenn die Seite wechselt? // Füge created(){ in der entsprechenden Komponente hinzu document.title="Test" } Beim Aufrufen dieser Komponente wechselt der Titel automatisch zu „Test“ Wenn wir die obige Methode verwenden, müssen wir so viele Komponenten hinzufügen, wie wir entwickelt haben, was zu mühsam ist. Daher müssen wir Routing Guards verwenden, um einheitliche Änderungen vorzunehmen und die Wartung zu erleichtern. 10.1 Globale Wache 1>, Verwenden Sie router.beforeEach((bis,von,weiter)=>{ //Route von von nach nach // Wir müssen der Route nur ein Namensattribut hinzufügen document.title = from.name nächste() }) Hinweis: Die Reihenfolge der oben genannten drei Parameter kann nicht geändert werden. next darf nicht fehlen, es muss hinzugefügt werden, sonst kann die Seite nicht zum nächsten Schritt springen und bleibt im leeren Bereich hängen. 2>, Verwenden Sie router.afterEach((bis,von)=>{ console.log('Rückenschutz') }) Beide Guards sind globale Guards. 10.2. Exklusiver RouterschutzDie direkt in der Routenkonfiguration definierten Guards werden auf die gleiche Art und Weise verwendet wie globale Guards, mit dem Unterschied, dass sie in einem der Routenobjekte platziert werden und nur unter dieser Route funktionieren. { Pfad: "/test", Name: "Test", Komponente: ()=> import( "../views/manager/test.vue"), vorEingabe:(bis,von,weiter)=>{ console.log('bevor der Test beginnt') nächste() } } Diese Guards haben die gleichen Methodenargumente wie die globalen vorhergehenden Guards. 10.3. Schutzvorrichtungen innerhalb von KomponentenSie können Routennavigationsschutzmechanismen direkt in der Routenkomponente definieren. Die in der Komponente definierten Schutzmechanismen sind Komponentenschutzmechanismen. const Foo = { Vorlage: `...`, vorRouteEnter(nach, von, weiter) { // Wird aufgerufen, bevor die entsprechende Route, die diese Komponente rendert, bestätigt wird. // Nein! fähig! Holen Sie sich die Komponenteninstanz `this` // Da die Komponenteninstanz nicht erstellt wurde, bevor der Guard ausgeführt wird}, vorRouteUpdate(nach, von, weiter) { // Wird aufgerufen, wenn sich die aktuelle Route ändert, die Komponente aber wiederverwendet wird // Beispielsweise für einen Pfad /foo/:id mit dynamischen Parametern, wenn zwischen /foo/1 und /foo/2 gesprungen wird, // Da dieselbe Foo-Komponente gerendert wird, wird die Komponenteninstanz wiederverwendet. Und dieser Hook wird in diesem Fall aufgerufen. // Sie können auf die Komponenteninstanz `this` zugreifen }, vorRouteAbfahren(nach, von, weiter) { // Wird aufgerufen, wenn von der entsprechenden Route dieser Komponente weg navigiert wird // Sie können auf die Komponenteninstanz `this` zugreifen } } Hinweis: 11. am Leben bleiben Beim Routenwechsel wird die Seite jedes Mal neu gerendert. Einige unserer Komponenten enthalten Daten, die beibehalten werden müssen. Wir möchten nicht jedes Mal neu rendern, wenn wir hin- und herwechseln, also verwenden wir <div id="app"> <router-link to="/home">Zuhause</router-link> <router-link to="/login">Anmelden</router-link> <am Leben erhalten> <Router-Ansicht></Router-Ansicht> </am Leben erhalten> </div> Fügen Sie eine 11.1. Keep-Alive-spezifische Methodenaktiviert(){ console.log('aktiviert') }, deaktiviert(){ console.log("deaktiviert") } Diese beiden Funktionen werden nur ausgeführt, wenn die Komponente im Status gehalten wird und Ausführungsreihenfolge des Keep-Alive-Lebenszyklus: 11.2. Keep-Alive-AttributKeep-Alive hat zwei sehr wichtige Eigenschaften: <keep-alive include="test"> <Router-Ansicht></Router-Ansicht> </am Leben erhalten> //Testkomponente fügt Namensattribut hinzu <template> <div> prüfen </div> </Vorlage> <Skript> Standard exportieren { Name: "Test" } <Skript> Zu diesem Zeitpunkt wird nur Wenn andere Komponenten gleichzeitig zwischengespeichert werden müssen, kann <keep-alive include="test,benutzer"> <Router-Ansicht></Router-Ansicht> </am Leben erhalten> Verwendung von „exclude“: <keep-alive exclude="test,benutzer"> <Router-Ansicht></Router-Ansicht> </am Leben erhalten> Genau das Gegenteil vom vorherigen Beispiel. Nur Dies ist das Ende dieses Artikels über den detaillierten Prozess des Installationsprinzips von vue-Router. Weitere relevante Inhalte zu vue-Router finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: So ermitteln Sie die Höhe des MySQL InnoDB B+-Baums
>>: MySql-Gruppierung und zufälliges Abrufen eines Datenelements aus jeder Gruppe
In diesem Artikel finden Sie ein grafisches Tutor...
Bildschirmeinführung Screen ist eine vom GNU-Proj...
XML/HTML-CodeInhalt in die Zwischenablage kopiere...
Vorwort Wenn ein Linux vollständig eingerichtet i...
Inhaltsverzeichnis Unkontrollierte Komponenten Ko...
Inhaltsverzeichnis Vorwort: Schritt 1: Finden Sie...
Plattformbereitstellung 1. JDK installieren Schri...
1. Syntax TIMESTAMPDIFF(Einheit, Beginn, Ende); G...
Unabhängig davon, ob es sich um einen Samba-Diens...
Würmer replizieren sich, wie der Name schon sagt,...
Ursprünglich sollte dieses siebte Kapitel eine aus...
1. Grundlegende Implementierung des Limits Im All...
Inhaltsverzeichnis 1. Speichermodell und Laufzeit...
Vorwort Nur Innodb- und MyISAM-Speicher-Engines k...
Nginx unterstützt drei Möglichkeiten zum Konfigur...