1. 前提条件インポートには require.context メソッドを使用します。vite で作成したプロジェクトで使用すると、「require not found」というエラーが報告されるため、webpack を使用してプロジェクトを作成する必要があります。または、Vite でこの問題を解決する方法を教えてもらえますか。 II. ルール私たちが使用するルールは、src/views/ パスの下にあるすべてのディレクトリとサブディレクトリを検索し、「index.vue」という名前のファイルを検索し、親ディレクトリの名前を登録用のコンポーネント名として使用することです。構造は次のとおりです。 パブリックコンポーネントの登録と同様に、index.vue コンポーネントのみを登録し、他の名前のコンポーネントは登録されません。 3. インポート// src/router/index.ts 'vue-router' から {createRouter、createWebHashHistory、createWebHistory、RouteRecordRaw} をインポートします。 「@/store」からストアをインポートします。 import daxie from "@/util/upper"; // 文字列の最初の文字を大文字にするメソッドを導入します。私はパス名の最初の文字を大文字にすることに慣れています。 // 自動ルーティング登録 const routerList:any = [] const requireComponent = require.context('@/views', true, /index.vue$/) // views パスの下にあるすべてのファイルを検索 const dynamic_route = requireComponent.keys().filter(fileName => { 真を返す }) // これでファイル配列の順序が乱れました。まず親ルートを先頭にして並べ替えます。子ルートが先頭にあり、親ルートが作成されていない場合は、エラーが報告されます。 // console.log(dynamic_route,"Before sorting") dynamic_route.sort(関数(a,b):数値{ const jieguoa:any = a.split("").filter((item:string)=>{ 戻り値 "/" == 項目 }) const jieguob:any = b.split("").filter((item:string)=>{ 戻り値 "/" == 項目 }) (jieguoa.length<jieguob.length)の場合{-1を返す} jieguoa.length>jieguob.lengthの場合{1を返す} 0を返す }) // console.log(dynamic_route,"ソート後") dynamic_route.forEach(ファイル名 => { const パス = ファイル名.replace(".", "") const namelist = fileName.replace(".", "").replace("index.vue", "").split("/").filter((i:any) => { 戻る }) // テスト構成 const componentConfig = requireComponent(fileName) // コンポーネントは任意の属性を任意に追加できます。現在、必要な動的パラメータを格納する配列である canshu 属性が追加されています。// console.log(componentConfig.default,"Component Configuration 2") // 各レイヤーは手動で指定する必要があるため、3 つのレイヤーだけを指定します if (namelist.length == 1) { ルータリスト.push({ パス:"/"+ namelist[namelist.length - 1], 名前: daxie(namelist[namelist.length-1]), コンポーネント:()=>import(`../views${path}`), 子供たち:[]、 }) }そうでない場合(namelist.length == 2){ routerList.forEach((item:any)=>{ if(item.name == daxie(namelist[0])){ // コンポーネントにパラメータが必要かどうかを判定する const canshu = componentConfig.default.canshu || [] if(canshu){ (i=0;i<canshu.length;i++) の場合 カンシュ[i] = "/:"+カンシュ[i] } アイテム.children.push({ パス: namelist[namelist.length-1] + canshu.join(""), 名前: daxie(namelist[namelist.length-1]), コンポーネント:()=>import(`../views${path}`), 子供たち:[]、 }) }それ以外{ アイテム.children.push({ パス: namelist[namelist.length-1], 名前: daxie(namelist[namelist.length-1]), コンポーネント:()=>import(`../views${path}`), 子供たち:[]、 }) } } }) }そうでない場合(namelist.length == 3){ routerList.forEach((item:any)=>{ if(item.name == daxie(namelist[0])){ item.children.forEach((yuansu:any)=>{ if (yuansu.name == daxie(namelist[1])){ // パラメータが必須かどうかを判定する const canshu = componentConfig.default.canshu || [] if(canshu){ (i=0;i<canshu.length;i++) の場合 カンシュ[i] = "/:"+カンシュ[i] } yuansu.children.push({ パス: namelist[namelist.length - 1]+canshu.join(""), 名前: daxie(namelist[namelist.length-1]), コンポーネント:()=>import(`../views${path}`), }) }それ以外 { yuansu.children.push({ パス: namelist[namelist.length - 1], 名前: daxie(namelist[namelist.length-1]), コンポーネント:()=>import(`../views${path}`), }) } } }) } }) } }) const ルート: Array<RouteRecordRaw> = [ { パス: '/'、 名前: 'ホーム'、 コンポーネント: ()=>import("@/views/shouye/shouye.vue") }, { パス: '/about', 名前: 'About'、 コンポーネント: () => import(/* webpackChunkName: "about" */ '../views/About.vue') }, ...ルーターリスト、 { パス: '/404', 名前: '404', コンポーネント: () => import('@/views/404.vue') }, { パス: '/:pathMatch(.*)', リダイレクト: '/404' }, ] // 順序に注意してください。最新のルーティング マッチング ルールによれば、404 ページは最後にある必要があります。 console.log(routes,"ルーティングテーブルの内容を表示する") const ルーター = createRouter({ 履歴: createWebHistory(), // 履歴: createWebHashHistory(), ルート }) デフォルトルーターをエクスポートする このように、ルールに従ってコンポーネントを作成するだけで、ルートに自動的に登録されます。面倒な手動登録操作を排除します。 要約するこれで、vue3.0 ルート自動インポートに関するこの記事は終了です。vue3.0 ルート自動インポートに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Ubuntu仮想マシンでシリアル通信にcutecomを使用する方法
>>: Docker を使用して静的 Web サイト アプリケーションを作成する (複数の方法)
この記事では、WeChatアプレットがSMS認証コードのカウントダウンを送信するための具体的なコード...
目次1. メニューをクリックしてジャンプ1. ページ名の統一2. 管理ページを追加3. ルートを追加...
この記事では、音楽プレーヤーを実装するためのVue.jsの具体的なコードを参考までに共有します。具体...
1. 静的ページとは、Web ページ内に HTML タグのみが含まれるページです。WEB 開発者がこ...
Windows システム向け MySQL インストール チュートリアルダウンロード1. https:...
1. はじめにMYSQL の MDL ロックは常に頭痛の種でした。ロックについて話すとき、通常は I...
1. まずリクエスト設定ファイルを見て、axios.createメソッドを見てください。baseUR...
1. アイデアMySQL に 1,000,000 件のレコードを挿入するのにたった 6 秒しかかかり...
この記事では、Webオンラインチャットを実装するためのVueの具体的なコードを参考までに紹介します。...
システム トレイ アイコンは、今日でも魔法のような機能です。アイコンを右クリックして目的のアクション...
プロジェクトでは https サービスを使用する必要があるため、Alibaba Cloud では無料...
この記事では、CSSの透明な境界線の背景クリップの素晴らしい使い方を主に紹介し、みんなと共有し、自分...
私は頻繁にシステムをインストールするので、インストールのたびにいくつかのソフトウェアを再インストール...
現実世界では、鍵は外の世界から身を隠したいときに使用するツールです。コンピュータでは、複数のプロセス...
<br />外交部などの中央政府機関、各レベルの地方政府、その他の国家機関や部門が率先し...