Routing-Plugins modular nutzen(1) Installation npm installiere Vue-Router (2) Erstellen Sie ein Dateiverzeichnis Erstellen Sie einen Router-Ordner im src-Verzeichnis und erstellen Sie dann eine index.js (3) Hier erstellen wir Routen modular, um die Codeverwaltung zu erleichtern. Hier registrieren wir nur das Routen-Plugin und erstellen dann das Routenobjekt. Das erstellte Routingobjekt wird über das Schlüsselwort „export default“ verfügbar gemacht. //index.js VueRouter von „vue-router“ importieren Vue von „vue“ importieren Home aus "../views/Home" importieren; Vue.use(VueRouter) //Routing-Plugin registrieren export default new VueRouter({ Routen:[{ Weg:'/', Komponente:Home }] }) (4) Importieren Sie das erstellte Routing-Objekt in die Eintragsdatei main.js und mounten Sie es in die Vue-Instanz. //main.js Vue von „vue“ importieren App aus „./App.vue“ importieren Store aus „@/store“ importieren importiere Router von '@/router' //Hier stellen wir das von uns erstellte Routing-Objekt vor. Modulare Programmierung Vue.config.productionTip = false Vue.prototype.bus = neues Vue() neuer Vue({ speichern, Router, rendern: h => h(App), }).$mount('#app') Routen verwendenDeklarative Navigation Es ist verständlich, dass das Springen durch Etiketten Deklarative Navigation: Definieren von Routingregeln { Weg:'/', Komponente:Home Name:Startseite } (1) Das to-Attribut des Router-Link-Navigations-Tags verwendet eine Zeichenfolge <router-link to="/">Gehe zur Startseite</router-link> (2) So können Sie über das Router-Link-Navigations-Tag Einspruch erheben Abgleich über Pfade <router-link :to="{path:'/'}">gehe nach Hause</router-link> Das Router-Link-Navigationstag zum Attribut verwendet ein Objekt und stimmt mit dem Routennamen überein <router-link :to="{name:'home'}">nach Hause gehen</router-link> Programmatische NavigationEs kann als JS-Sprung verstanden werden Programmatische Navigation: Das folgende Beispiel enthält Informationen zur dynamischen Routenanpassung und zu Abfrageparametern. Wenn Sie sich nicht sicher sind, können Sie zuerst den Inhalt dieser beiden lesen und dann zurückkommen, um den Inhalt hier zu lesen. // Zeichenfolge router.push('home') // Objekt router.push({ Pfad: 'home' }) // Benannte Routen router.push({ name: 'user', params: { userId: '123' }}) // Mit Abfrageparametern wird es zu /register?plan=private router.push({ Pfad: 'registrieren', Abfrage: { Plan: 'privat' }}) Hinweis : Wenn ein Pfad angegeben ist, werden Parameter ignoriert, was bei der Abfrage im obigen Beispiel nicht der Fall ist. Stattdessen müssen Sie den Routennamen und die Parameter angeben oder den vollständigen Pfad mit Parametern manuell schreiben: Konstante Benutzer-ID = "123" router.push({ Name: 'Benutzer', Parameter: { Benutzer-ID }}) // -> /Benutzer/123 router.push({ Pfad: `/Benutzer/${Benutzer-ID}` }) // -> /Benutzer/123 // Die Parameter hier sind nicht wirksam router.push({ path: '/user', params: { userId }}) // -> /user Dynamische RoutenanpassungDefinieren von Routingregeln { Pfad:'/Benutzer/:id', Komponente:Benutzer Name:Benutzer } <router-link to="/user/01">Gehe zur Startseite</router-link> <router-link :to="{path:'/user/01'}">gehe nach Hause</router-link> <router-link :to="{name:'/user',params={id:'01'}}">gehe nach Hause</router-link> Indem Sie es wie oben definieren, können Sie die dynamischen Routenparameter über $route.params.id abrufen: der ID-Wert ist „01“ Beachten: Wenn Sie zum Abgleichen die Objektmethode verwenden, können Pfad und Parameter nicht verwendet werden. Nur nach Name und Parametern Die folgende Methode kann nicht mit der Routing-Regel {path:'/user/:id'} übereinstimmen. Der folgende Ausdruck kann nur als '/user' verstanden werden. Auch wenn die Route mit dem Platzhalterzeichen * übereinstimmt, werden keine Parameter übergeben, da das Parameterattribut nicht analysiert wird, wenn das Pfadattribut vorhanden ist. { // Stimmt mit allen Pfaden überein. Pfad: '*' } { // Stimmt mit jedem Pfad überein, der mit „/user-“ beginnt. Pfad: „/user-*“ } Platzhalter-ÜbereinstimmungspfadNormalerweise verwenden wir *, um andere unerwartete Pfade zu erfassen und sie als Fallback zu behandeln, wobei wir sie normalerweise zu einer 404-Fehlerseite navigieren. <router-link to="/Benutzer?name=zhangsan">...</router-link> <router-link :to="{path:'/user?zhangsan'}">...</router-link> <router-link :to="{Pfad:'/Benutzer',Abfrage:{Name:'zhangsan'}}">...</router-link> <router-link :to="{name:'Benutzer',query:{name:'zhangsan'}}">...</router-link> Wenn ein Platzhalter verwendet wird, wird $route.params automatisch ein Parameter namens „pathMatch“ hinzugefügt. Es enthält den Teil der URL, der mit dem Platzhalter übereinstimmt. Abfrageparameter<router-link to="/Benutzer?name=zhangsan">...</router-link> <router-link :to="{path:'/user?zhangsan'}">...</router-link> <router-link :to="{Pfad:'/Benutzer',Abfrage:{Name:'zhangsan'}}">...</router-link> <router-link :to="{name:'Benutzer',query:{name:'zhangsan'}}">...</router-link> Abfrageparameter sind nicht wie dynamische Routenparameterübereinstimmung. Auch wenn ein Pfad verwendet wird, kann die Abfrage weiterhin zum Übergeben von Parametern verwendet werden. Die von der obigen Abfrage übergebenen Parameter können über Reagieren auf Änderungen der Routing-Parameter Wenn die Route von (1) Überwachung durch Uhr const Benutzer = { Vorlage: '...', betrachten: $route(nach, von) { // Auf Routenänderungen reagieren... } } } (2) Überwachung durch Schiffswächter const Benutzer = { Vorlage: '...', vorRouteUpdate(nach, von, weiter) { // auf Routenänderungen reagieren... // vergessen Sie nicht, next() aufzurufen } } Benannte Routen, Routen-Aliase und WeiterleitungenUm die Unterschiede zwischen diesen drei Konzepten besser herauszustellen, habe ich sie im Folgenden näher erläutert. Diese Inhalte werden in den Routingregeln konfiguriert . { Pfad: '/SeiteEins', Komponente:PageOne, Alias:"/ersteSeite", Name:"SeiteEins", Umleitung: {Name: 'SeiteZwei'} }, { Pfad: '/SeiteZwei', Komponente:SeiteZwei, Name:'SeiteZwei' } (1) Benennung der Route: Dies kann verstanden werden als die Benennung dieser Route Auch wenn Sie der Route über das Attribut name einen Namen geben Routen: [ { Pfad: '/user/:userId', Name: "Benutzer", Komponente: Benutzer } ] (2) Routenalias: Dies kann als der zweite Name dieser Route verstanden werden. Beispielsweise ist der Alias von /a /b. Wenn ein Benutzer /b besucht, bleibt die URL /b, aber der von der Route gefundene Inhalt ist /a. Das heißt, der Wissens-URL-Inhalt zeigt, dass der Inhalt von /b tatsächlich /a ist. Hinweis: Der Alias sollte hier als Pfad ausgedrückt werden, anstatt den Namen direkt zu schreiben, wie bei benannten Routen~ const router = neuer VueRouter({ Routen: [ { Pfad: '/a', Komponente: A, Alias: '/b' } ] }) (3) Umleitung: Dies kann so verstanden werden, dass beim Zugriff auf /a direkt zu /b gesprungen wird Es gibt drei Formen von Umleitungsanweisungen:
const router = neuer VueRouter({ Routen: [ { Pfad: '/a', Umleitung: '/b' } ] })
const router = neuer VueRouter({ Routen: [ { Pfad: '/a', Umleitung: { Name: 'foo' }} ] })
const router = neuer VueRouter({ Routen: [ { Pfad: '/a', Umleitung: zu => { // Methode erhält die Zielroute als Parameter // gibt den umgeleiteten String-Pfad/Pfadobjekt zurück }} ] }) Verschachtelte RoutenVerschachteltes Routing kann folgendermaßen verstanden werden. Die von den abgeglichenen Routen gerenderten Komponenten enthalten Routing-Komponenten. Wenn wir eine Route abgleichen, rendert „/user“ eine Komponente „User“, aber wenn wir mit dem Abgleichen fortfahren möchten, in der <router-view ></router-view> der Komponente „User“. Dann müssen wir eine weitere Übereinstimmung nach /user/childRouteName herstellen. „childRouteName“ ist der Wert des entsprechenden Pfads in unseren untergeordneten Routing-Regeln. { Pfad: '/user', Komponente: Benutzer, Kinder: [ { // Wenn /user//profile erfolgreich übereinstimmt, // UserProfile wird im <router-view>-Pfad des Benutzers gerendert: 'profile', Komponente: UserProfile }, { // Wenn /user//posts erfolgreich übereinstimmt // werden UserPosts im <router-view>-Pfad des Benutzers gerendert: 'posts', Komponente: UserPosts } ] } APP.Vue <div id="app"> <Router-Ansicht></Router-Ansicht> </div> In der Benutzerkomponente const Benutzer = { Vorlage: ` <div Klasse="Benutzer"> <span>Benutzerkomponente</span> <Router-Ansicht></Router-Ansicht> </div> ` } Beachten: Wenn verschachtelte Routen definiert werden, das heißt, wenn untergeordnete Routen definiert werden, muss die Route vollständig sein, um eine korrekte Übereinstimmung zu gewährleisten. Das heißt, wenn die Zuordnung für /user/profile erfolgreich ist, wird die Zuordnung für /user nicht erfolgreich sein. Benannte Ansichten Wenn Sie mehrere Ansichten einer Komponente gleichzeitig rendern, achten Sie darauf, dass mehrere Ansichten auf derselben Ebene angezeigt werden und nicht verschachtelt werden. Sie können dieses Problem derzeit lösen, indem Sie der Ansicht einen Namen geben. { Pfad:"/Benennungsroute", Komponenten:{//Beachten Sie, dass Komponenten mit „s“ enden, was bei alleiniger Verwendung nicht der Fall war. Standard: Home, eins:SeiteEins, zwei:SeiteZwei } } Komponentendefinition <router-view></router-view>//Rendert die Komponente, die der Standardeinstellung entspricht<router-view name="one"></router-view>//Rendert die Komponente, die eins entspricht<router-view name="two"></router-view>//Rendert die Komponente, die zwei entspricht Wenn die URL :/namingRoute lautet und die Route übereinstimmt, wird sie entsprechend der entsprechenden Router-Ansichtskomponente gerendert. Navigationswächter(1) Globale WacheEs kann als ein durch das globale Router-Instanzobjekt Router definierter Schutz verstanden werden.
Anwendung: vorJedem((bis,von,nächstes)=>{ //... })
Nachdem alle Guards in Komponenten und asynchronen Routenkomponenten aufgelöst wurden, wird der Resolve Guard aufgerufen Anwendung: router.beforeResolve((zu, von, weiter) => { // ... })
Der Hook akzeptiert keine Weiter-Funktion und ändert die Navigation selbst nicht: Anwendung: router.afterEach((bis, von) => { // ... }) Verwendeter Speicherort: normalerweise index.js im Router-Ordner const router = neuer VueRouter({ ... }) //Globaler Frontguard router.beforeEach((to, from, next) => { // ... }) //Globaler Auflösungsschutz router.beforeResolve((to, from, next) => { // ... }) //Globaler Post-Hook router.afterEach((to, from) => { // ... }) (2) Exklusiver RouterschutzEs kann als ein in den Routing-Regeln definierter Schutz verstanden werden
(3) Schutzmaßnahmen innerhalb von KomponentenEs kann als ein in der Komponente definierter Schutz verstanden werden
Die Komponenteninstanz wurde noch nicht erstellt. Wird aufgerufen, bevor die Route bestätigt wird. const Benutzer = { 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` // Weil die Komponenteninstanz nicht erstellt wurde, bevor der Guard ausgeführt wird} } Beachten: Der Wächter kann dies nicht direkt verwenden, um auf das Vue-Instanzobjekt zuzugreifen, da die Komponenteninstanz noch nicht erstellt wurde. Sie können jedoch einen Rückruf an die nächste Methode übergeben, um die Komponenteninstanz zu lokalisieren. Die Übergabe eines Rückrufs an next() ist nur gültig, wenn sie in beforeRouteEnter verwendet wird! ! ! beforeRouteEnter (nach, von, weiter) { weiter(vm => { // Zugriff auf die Komponenteninstanz über `vm`}) }
Wird aufgerufen, wenn sich die Route ändert und die Komponente verwendet wird const Benutzer = { Vorlage: `...`, 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 } }
Wird aufgerufen, wenn die Navigation die Route verlässt, die dieser Komponente entspricht const Benutzer = { Vorlage: `...`, vorRouteAbfahren(nach, von, weiter) { // Wird aufgerufen, wenn von der entsprechenden Route dieser Komponente weg navigiert wird // Sie können auf die Komponenteninstanz `this` zugreifen } } NavigationsanalyseprozessNormale Ausführungsreihenfolge für erste Zugriffsrouten
ZusammenfassenDieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalt auf 123WORDPRESS.COM lesen können! Das könnte Sie auch interessieren:
|
>>: HTML-Tabellen-Tag-Tutorial (26): Zellen-Tag
Weiterführende Literatur: Beheben Sie das Problem...
Inhaltsverzeichnis 1. Grundtypen 2. Objekttyp 2.1...
In diesem Artikel wird hauptsächlich die SQL-Skri...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis React-Native-Projektinitialisi...
So schreiben Sie mithilfe von Filtern transparente...
1. Übersicht über die Atomizität von DDL Vor 8.0 ...
Vorwort Bei der Arbeit muss ich jede Woche die vo...
Das Problem beim Zurücksetzen des Passworts für d...
Inhaltsverzeichnis Tabellendefinition - automatis...
Haben Sie schon einmal eine Situation erlebt, in d...
1. Holen Sie sich das Bild #Geben Sie die Version...
Umfeld System: Ubuntu 18.04 Software: qt5.12.8 1....
<br />Vorheriger Artikel: Webdesign-Tutorial...
In diesem Artikelbeispiel wird der spezifische Ja...