序文 - Vue ルーティングVue-router は、Vue.js と深く統合された、Vue の公式ルーティング プラグインです。 [SPA ウェブページ]フロントエンド レンダリングにより、単一ページのリッチ アプリケーション SPA ページを実装できます。ウェブページ全体には 1 つの HTML ページのみがあり、静的リソース サーバーには 1 セットの HTML と CSS、または 1 セットの JS のみが含まれます。 [リッチアプリケーション]は、新しいリクエストURLをサーバーに送信することで実現されます。サーバーからリソースを取得した後、フロントエンドルーターはページの対応するコンポーネントにリソースを割り当てる役割を担います。 [シングルページ]の実装では、フロントエンドでURLを変更する必要があります。フロントエンドルーティングが表示された後、フロントエンドルーティングはルーターの監視に従ってマッピング関係から変更が必要な部分を見つけ、新しいリソースを抽出して割り当て、変更が必要な部分のみを再レンダリングします。 1. 最も基本的なルーティング構成まず、vue-router をインストールする必要がありますが、インストール方法は説明しません… それを開いて、ルート配列で構成します。ページのルートはこの配列内のオブジェクトにグループ化され、URL が変更にどのように反応するかに対応するパスやコンポーネントなどのプロパティが含まれます。 1. router/index.jsを設定する// これは router/index.js にあります。すべて; 'vue-router' から {createRouter、createWebHistory} をインポートします。 '../views/Home.vue' から Home をインポートします。 定数ルート = [ //ここでルーティングを設定します。 ] // router4 では new VueRouter の代わりに createRouter を使用します。 const ルーター = createRouter({ 履歴: createWebHistory(process.env.BASE_URL)、 ルート //ここですべてのページのルーティング構成配列ルートを導入します。 }) デフォルトルーターをエクスポートする //すべてのルーティング設定を含むルータオブジェクトをエクスポートします。 // グローバル使用のために main.js に挿入されます。 コンポーネント属性: 値はページです。このページコントロールは事前に導入する必要があります。 path 属性: コンポーネント属性に対応するページにジャンプするために URL に表示される内容を指定します。 // これは router/index.js にあり、末尾は省略されています。 'vue-router' から {createRouter、createWebHistory} をインポートします。 '../views/Home.vue' から Home をインポートします。 '../views/About.vue' から About をインポートします。 '../views/News.vue' から News をインポートします。 //3 つのページ コントロールを導入します。 定数ルート = [ { パス: '/', /* 初期 URL に対応するページを指定します*/ 名前: 'ホーム'、 コンポーネント: ホーム /* デフォルトのホームページを指定します*/ }, { path: '/about',/* 新しいセグメントが /about*/ の場合にジャンプする URL を指定します 名前: 'About'、 コンポーネント: About /* About へジャンプ */ }, { パス: '/news', /* 新しいセグメントが /news*/ の場合に URL がリダイレクトされることを指定します 名前:「ニュース」、 コンポーネント: ニュース /* ニュースへジャンプ */ }, ] 2. App.vueを構成するURL が異なる文字に変更された場合にリダイレクトする方法はすでに指定しました。次に、URL を独自の方法で変更する方法を検討する必要があります。 世界中で登録された 2 つの新しいタグを紹介します。 <router-link to="URLに追加する文字">XXX</router-link> //<router-link> は <a> としてレンダリングされます。 <ルータービュー /> //これら 2 つを組み合わせて使用する必要があります。 App.vue 内のすべてのページジャンプは、URL を変更することによって <router-link> によって実行されます。 <router-view> は、router-link タグを表示する場所を指定するプレースホルダー タグです。 <!-- これは App.vue にあります --> <テンプレート> <div id="nav"> <!-- to 属性は URL の変更方法を指定します。 --> <!-- Tag 属性は、router-link タグをどの HTML 要素にレンダリングする必要があるかを指定します。 --> <router-link to="/" Tag="a">ホームページ</router-link> | <router-link to="/about" Tag="a">About ページ</router-link> | <router-link to="/news" Tag="a">ニュースページ</router-link> | <router-link to="/login" Tag="a">ログイン</router-link> </div> <ルータービュー /> </テンプレート> 次に、 タグ属性によると、さらに 4 つのタグがあることがわかります。ニュースをクリックして確認してみましょう。 router-linkのto属性の値に応じてURLが変化し、ページが正しくジャンプします。 2. ルーティング遅延読み込み技術異なるルートに対応するコンポーネントを分離し、特定のルートがトリガーされたときにのみ対応するコンポーネントを読み込むと、より効率的になります。サードパーティ、基盤となるサポート、およびパブリック アプリを除き、その他の Vue ページ コンポーネントはサーバー上にあり、いつでもリクエストできるため、ページへの影響は最小限に抑えられます。 実際には、router/index.js 内の各コンポーネントの導入方法を変更するだけです... 定数ルート = [ { パス: '/about', 名前: 'About'、 コンポーネント: () => import('../views/About.vue') //About はここで直接導入され、コンポーネントに割り当てられます。 }, { パス: '/news', 名前:「ニュース」、 コンポーネント: () => import("../views/News.vue") //About はここで直接導入され、コンポーネントに割り当てられます。 }, { パス: '/login', 名前: 'ログイン', コンポーネント: () => import('../views/Login.vue') //About はここで直接導入され、コンポーネントに割り当てられます。 }, ] 3. ネストされたルートサブページにリンクがないわけにはいきませんよね? ユーザーが App.vue を通じてサブページに入ると、他のページに誘導する従属リンクが存在する必要があり、そのためにはルーティング ネスト テクノロジが必要です。 簡単に言うと、親ページのルートに子ページのルートを指定すること、例えばNews.vueのルートにNewsChild-1.vueのルートを指定することです。 //これは縮小された router/index.js です。 定数ルート = [ { パス: '/news', 名前:「ニュース」、 コンポーネント: () => import("../views/News.vue"), 子供たち: [ { パス: 'NewsChild-1', //サブルートの前に「/」と前のレイヤーのパスを付ける必要はありません。 //しかし実際には分析が追加されます。 //指定されたURLが表示された場合 /News/NewsChild-1、 //コンポーネントに対応するページにジャンプします。 コンポーネント: () => import("../views/NewsChild-1"), } ] }, ] これは、ニュース ページの URL が変更されたときに実行されるアクションを指定します。 <!-- これは News.vue です。 --> <テンプレート> <h1>ニュース</h1> // トリガーされると、URL が /News/NewsChild-1 ずつ増加するように指定します。 <router-link to="/News/NewsChild-1">NewsChild-1</router-link> <ルータービュー></ルータービュー> </テンプレート> 次に、レンダリングされたページを見てみましょう。 NewsChild-1のリンクをクリックしてください: router-link の to 属性の値に基づいて、URL は /News/NewsChild-1 になります。 4. 動的ルーティング多くの場合、ページをどこにジャンプさせる必要があるかはプログラムでは判断できません。そのため、ルートを動的に変更できるように、プログラムが必要に応じて自ら決定する必要があります。 1. 動的ルーティング構成簡単に言うと、[追加先のURL]と[パスでリダイレクトするURL]をハードコードする必要はなく、頻繁に変更する必要があるURLの部分をエクスポートデフォルトのデータとv-bindで接続し、データに応じてURLが変化するようにします。 //これはrouter/index.jsにあります 'vue-router' から createRouter、createWebHashHistory をインポートします。 定数ルート = [ { パス: '/'、 名前: 'ホーム'、 コンポーネント: () => import('../views/Home.vue'), }, { //ここでパスの値をハードコードしないでください。 パス: '/user/:userId', 名前: 'ユーザー', コンポーネント: () => import('../views/User.vue'), } ]; <!-- これは App.vue にあります --> <テンプレート> <div id="アプリ"> <router-link to="/">ホーム</router-link> | <router-link to="/about">について</router-link> | <!-- ここで v-bind を使用して userId データを呼び出します。 --> <!-- /user/ を文字列として userId に連結します --> <router-link v-bind:to="'/user/' + userId">ユーザー</router-link> </div> <ルータービュー /> </テンプレート> <スクリプト> エクスポートデフォルト{ 名前:「アプリ」、 データ() { 戻る { //ここでuserIdデータをbaixiaに設定します。 ユーザーID: "baixia", }; }, }; </スクリプト> 効果を見てみましょう: 次に「ユーザー」をクリックします。 URL はデータ内の UserId (baixia) を正常に連結します。 2. 動的ルーティングパラメータ動的ルーティングは、Vue がデータを転送する方法の 1 つでもあり、$route を使用して Vue ページ コンポーネント (つまり、vue ファイル) 間で通信します。 たとえば、User.vue は App.vue のデータ内の userId データを取得する必要があります。 <!-- App.vue 内 (送信者) --> <テンプレート> <div id="アプリ"> <router-link v-bind:to="'/user/' + userId">ユーザー</router-link> </div> <ルータービュー /> </テンプレート> <スクリプト> エクスポートデフォルト{ 名前:「アプリ」、 データ() { 戻る { ユーザーID: "baixia", }; }, }; </スクリプト> //user.vue (レシーバー) 内 エクスポートデフォルト{ 名前:"ユーザー", 計算: { ユーザーID() { this.$router.params.userId を返します // this.$router.param.userId の値、 //つまり、App.vueのルーターリンクによって渡されたuserIdが返されます。 //計算属性userID()の値として使用されます} } } User.vue でユーザー情報を取得するために使用されるパラメータは、index.js のパスによって異なります。パスが '/user/:abc' の場合、User.vue の <script> は次のようになります。 エクスポートデフォルト{ 名前:"ユーザー", 計算: { ユーザーID() { //ここでも abc 属性を取得する必要があります。 これを返します。$router.params.abc } } } 要約する昨日、HTML5 デザイン コンテストで最優秀賞を受賞したという通知を受け取りました... Vue-cli4 ルーティング設定の詳細な理解に関するこの記事はこれで終わりです。Vue-cli4 ルーティング設定の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL システム ユーザーが開くことができるファイルの最大数に関する簡単な説明
>>: Windows 10 に TomCat をインストールするチュートリアル図
コンテンツ属性は通常、::before および ::after 疑似要素で使用され、疑似要素のコンテ...
MySQL ROLE はどのような問題を解決しますか?プロフェッショナルな資質を持ち、権限管理に細心...
目次1. JavaScript エンジンとは何ですか? 2. V8エンジン3. ランタイム環境4. ...
この記事では、クリック時にサブメニューを表示するためのJavaScriptの具体的なコードを参考まで...
時々、データベース テーブルに重複したデータが大量に保存されます。これらの重複データはリソースを浪費...
目次1. イベントのリスニング2. イベントパラメータを渡す3. イベント修飾子ケース1: クリック...
目次1. 需要2. 実装3. 結果1. 需要入力ボックスにデータを入力し、入力結果に基づいてデータベ...
W3C では、さまざまなタグの規定を設定するだけでなく、Web ページの作成者が実際に W3C 規...
目次回避策Vue2.0 で 2 つの配列の変更を監視できないのはなぜですか?ソースコード分析ヴュー3...
フレーム構造タグ <frameset></frameset>フレームを使用す...
重要な注意: この記事を読む前に、Docker コンテナに関する知識と、一般的な Docker 操作...
(I) mysql5.7のインストール: ❀詳細:無料のグリーンバージョン5.7のインストール方法は...
最近、Linux に Aphace、mysql、php をインストールするときに多くの問題に遭遇しま...
あなたが作成するものこの新しいチュートリアルでは、CSS と JavaScript を使用して、レス...
nginx で proxy_pass を設定するときに、^~ に従ってパスを一致させる場合は、pro...