1. VoraussetzungenWir verwenden zum Importieren die Methode require.context. Wenn wir sie in einem von vite erstellten Projekt verwenden, wird der Fehler „require not found“ gemeldet. Daher müssen wir zum Erstellen eines Projekts webpack verwenden. Oder kann mir jemand sagen, wie Vite dieses Problem lösen kann. II. RegelnDie von uns verwendete Regel besteht darin, alle Verzeichnisse und Unterverzeichnisse unter dem Pfad src/views/ zu durchsuchen, nach Dateien mit dem Namen „index.vue“ zu suchen und den Namen des übergeordneten Verzeichnisses als Komponentennamen für die Registrierung zu verwenden. Der Aufbau ist wie folgt: Wie bei der öffentlichen Komponentenregistrierung registrieren wir nur die Komponente index.vue und Komponenten mit anderen Namen werden nicht registriert. 3. Import// src/router/index.ts importiere {createRouter, createWebHashHistory, createWebHistory, RouteRecordRaw} von 'vue-router' Store aus „@/store“ importieren; importiere daxie von "@/util/upper"; // Führe eine Methode ein, um den ersten Buchstaben eines Strings groß zu schreiben. Ich bin es gewohnt, den ersten Buchstaben des Pfadnamens groß zu schreiben. // Automatische Routing-Registrierung const routerList:any = [] const requireComponent = require.context('@/views', true, /index.vue$/) // Alle Dateien unter dem Ansichtspfad suchen const dynamic_route = requireComponent.keys().filter(fileName => { returniere wahr }) // Jetzt ist das Dateiarray nicht in der richtigen Reihenfolge. Wir sortieren es zuerst, mit der übergeordneten Route an erster Stelle. Wenn die untergeordnete Route an erster Stelle steht und die übergeordnete Route nicht erstellt wurde, wird ein Fehler gemeldet. // console.log(dynamic_route,"Vor dem Sortieren") dynamic_route.sort(Funktion (a,b):Nummer{ const jieguoa:any = a.split("").filter((item:string)=>{ return "/" == Artikel }) const jieguob:any = b.split("").filter((item:string)=>{ return "/" == Artikel }) wenn (jieguoa.Länge<jieguob.Länge){return -1} wenn(jieguoa.Länge>jieguob.Länge){return 1} Rückgabe 0 }) // console.log(dynamic_route,"nach dem Sortieren") dynamic_route.forEach(Dateiname => { const Pfad = Dateiname.replace(".", "") const namelist = fileName.replace(".", "").replace("index.vue", "").split("/").filter((i:any) => { Rückkehr ich }) // Testkonfiguration const componentConfig = requireComponent(Dateiname) // Die Komponente kann nach Belieben beliebige Attribute hinzufügen. Derzeit wird ein Canshu-Attribut hinzugefügt, ein Array, das die erforderlichen dynamischen Parameter speichert. // console.log(componentConfig.default,"Komponentenkonfiguration 2") // Jede Ebene muss manuell angegeben werden, also führen Sie einfach drei Ebenen aus, if (namelist.length == 1) { routerList.push({ Pfad:"/"+ Namensliste[Namensliste.Länge - 1], Name: daxie(Namensliste[Namensliste.Länge-1]), Komponente:()=>import(`../views${path}`), Kinder:[], }) }sonst wenn(Namensliste.Länge == 2){ routerList.fürJeden((item:any)=>{ wenn(item.name == daxie(namelist[0])){ // Bestimmen Sie, ob die Komponente Parameter benötigt const canshu = componentConfig.default.canshu || [] wenn(kannst du){ für (lass i=0;i<canshu.length;i++){ canshu[i] = "/:"+canshu[i] } Artikel.Kinder.push({ Pfad: Namensliste[Namensliste.Länge-1] + canshu.join(""), Name: daxie(Namensliste[Namensliste.Länge-1]), Komponente:()=>import(`../views${path}`), Kinder:[], }) }anders{ Artikel.Kinder.push({ Pfad: Namensliste[Namensliste.Länge-1], Name: daxie(Namensliste[Namensliste.Länge-1]), Komponente:()=>import(`../views${path}`), Kinder:[], }) } } }) }sonst wenn(Namensliste.Länge == 3){ routerList.fürJeden((item:any)=>{ wenn(item.name == daxie(namelist[0])){ item.children.forEach((yuansu:any)=>{ wenn (yuansu.name == daxie(namensliste[1])){ // Bestimmen Sie, ob der Parameter erforderlich ist const canshu = componentConfig.default.canshu || [] wenn(kannst du){ für (lass i=0;i<canshu.length;i++){ canshu[i] = "/:"+canshu[i] } yuansu.Kinder.push({ Pfad: Namensliste[Namensliste.Länge - 1]+canshu.join(""), Name: daxie(Namensliste[Namensliste.Länge-1]), Komponente:()=>import(`../views${path}`), }) }anders { yuansu.Kinder.push({ Pfad: Namensliste[Namensliste.Länge - 1], Name: daxie(Namensliste[Namensliste.Länge-1]), Komponente:()=>import(`../views${path}`), }) } } }) } }) } }) const routes: Array<RouteRecordRaw> = [ { Weg: '/', Name: "Home", Komponente: ()=>import("@/views/shouye/shouye.vue") }, { Pfad: '/about', Name: 'Über', Komponente: () => import(/* webpackChunkName: "about" */ '../views/About.vue') }, ...Routerliste, { Pfad: '/404', Name: '404', Komponente: () => import('@/views/404.vue') }, { Pfad: '/:pathMatch(.*)', Umleitung: '/404' }, ] // Achten Sie auf die Reihenfolge. Nach den neuesten Routing-Matching-Regeln muss die 404-Seite am Ende stehen. console.log(routes,"Den Inhalt der Routing-Tabelle anzeigen") const router = createRouter({ Verlauf: createWebHistory(), // Verlauf: createWebHashHistory(), Routen }) Standardrouter exportieren Auf diese Weise müssen Sie nur Komponenten gemäß den Regeln erstellen und diese werden automatisch in der Route registriert. Machen Sie Schluss mit der mühsamen manuellen Registrierung. ZusammenfassenDies ist das Ende dieses Artikels über den automatischen Import von vue3.0-Routen. Weitere relevante Inhalte zum automatischen Import von vue3.0-Routen finden Sie in den vorherigen Artikeln von 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 verwenden Sie cutecom für die serielle Kommunikation in einer virtuellen Ubuntu-Maschine
>>: Verwenden von Docker zum Erstellen statischer Website-Anwendungen (mehrere Möglichkeiten)
Vorwort Vor einiger Zeit ist bei mir ein MySQL-De...
Inhaltsverzeichnis Hintergrund 1. Die Abfragebedi...
Inhaltsverzeichnis 1. Warum Slots verwenden? 1.1 ...
Ich arbeite derzeit an einem eigenen kleinen Prog...
Viele Internetnutzer fragen sich oft, warum ihre W...
Vorwort Kürzlich stieß ich auf eine Anforderung. ...
1. Zuerst müssen Sie den Zielselektor von CSS3 ve...
Inhaltsverzeichnis 0x01 Das Treibermodul konnte n...
Dieser Artikel soll Ihnen vor allem dabei helfen,...
Wenn ein Unternehmensentwickler eine Insert-Anwei...
<br />Dieses Tag kann eine horizontale Linie...
Inhaltsverzeichnis Gleichzeitige Szenarien Schrei...
Ich habe erst vor ein paar Tagen mit der Arbeit b...
1. Was ist die Hyperlink-Symbol-Spezifikation ?&l...
Zwei Implementierungen der Vue-Dropdown-Liste Die...