Vue-cli4 ルーティング構成の詳細な理解

Vue-cli4 ルーティング構成の詳細な理解

序文 - Vue ルーティング

Vue-router は、Vue.js と深く統合された、Vue の公式ルーティング プラグインです。
vue-router を使用したシングルページアプリケーションでは、URL の変更によってコンポーネントが切り替わり、ページ切り替えの効果が得られます。したがって、URL を希望どおりに変更する方法と、URL の変更後にページがどこに移動するかが、vue-router を構成する際の 2 つの大きな問題です。

[SPA ウェブページ]フロントエンド レンダリングにより、単一ページのリッチ アプリケーション SPA ページを実装できます。ウェブページ全体には 1 つの HTML ページのみがあり、静的リソース サーバーには 1 セットの HTML と CSS、または 1 セットの JS のみが含まれます。

[リッチアプリケーション]は、新しいリクエストURLをサーバーに送信することで実現されます。サーバーからリソースを取得した後、フロントエンドルーターはページの対応するコンポーネントにリソースを割り当てる役割を担います。

[シングルページ]の実装では、フロントエンドでURLを変更する必要があります。フロントエンドルーティングが表示された後、フロントエンドルーティングはルーターの監視に従ってマッピング関係から変更が必要な部分を見つけ、新しいリソースを抽出して割り当て、変更が必要な部分のみを再レンダリングします。

1. 最も基本的なルーティング構成

まず、vue-router をインストールする必要がありますが、インストール方法は説明しません…
vue-router のインストールに成功すると、プロジェクト ファイルの src に「router」フォルダが作成されます。このフォルダ内に index.js があり、ここで主にルーターの設定が完了します。

ここに画像の説明を挿入

それを開いて、ルート配列で構成します。ページのルートはこの配列内のオブジェクトにグループ化され、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 を独自の方法で変更する方法を検討する必要があります。
App.vue のみがレンダリングされ、最初は誰もが App.vue のみを表示および操作するため、URL を変更するためのルールはここでのみ作成できます。

世界中で登録された 2 つの新しいタグを紹介します。

  <router-link to="URLに追加する文字">XXX</router-link>
  //<router-link> は <a> としてレンダリングされます。
  <ルータービュー />
  //これら 2 つを組み合わせて使用​​する必要があります。

App.vue 内のすべてのページジャンプは、URL を変更することによって <router-link> によって実行されます。

<router-view> は、router-link タグを表示する場所を指定するプレースホルダー タグです。
いずれにしても、これを削除すると 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>
  <ルータービュー />
</テンプレート>

次に、 npm run serveプロジェクトを実行し、確認します。

ここに画像の説明を挿入

タグ属性によると、さらに 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 が変更されたときに実行されるアクションを指定します。
もちろん、ニュース ページの URL を変更する方法も指定し、それを実行するには News.vue を入力する必要があります。

<!-- これは 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 ファイル) 間で通信します。
まず、2 つの変数について知っておきましょう。
$router : index.jsの最後にcreateRouterによって作成されたルーティングオブジェクト
$route : 現在アクティブなルート オブジェクト。params 属性と完全な名前のパラメータを持ち、v-bind を使用して URL に渡された値を取得するために使用できます。

たとえば、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 の進捗状況を把握する必要があります。

Vue-cli4 ルーティング設定の詳細な理解に関するこの記事はこれで終わりです。Vue-cli4 ルーティング設定の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • vue-cli スキャフォールディングで vue-router フロントエンドルートを構成する
  • VUE: vue-cli のルートから # 操作を削除する
  • Vue-cli からルータールーティングガードに Vue をビルドする
  • Vue-CLI プロジェクトでのルーティングパラメータの受け渡しの詳細な説明
  • 同様のタブ切り替え効果を実現するために vue-cli ルーティングをベースにしています (vue 2.0)
  • vue-cli デフォルトルート選択状態の問題と解決コード (サブルート選択時)
  • Vue-cliは複数のページと複数のルートのサンプルコードを実装します
  • vue-cli でのルーティングの使用に関する詳細な説明
  • Windows で vue-cli と webpack を使用して Web サイトを構築する詳細な説明 (IV) ルーティング vue-router の使用

<<:  MySQL システム ユーザーが開くことができるファイルの最大数に関する簡単な説明

>>:  Windows 10 に TomCat をインストールするチュートリアル図

推薦する

CSSコンテンツ属性の具体的な使用法

コンテンツ属性は通常、::before および ::after 疑似要素で使用され、疑似要素のコンテ...

MySQL 8の新機能ROLEの詳しい説明

MySQL ROLE はどのような問題を解決しますか?プロフェッショナルな資質を持ち、権限管理に細心...

フロントエンドJavaScriptの動作原理

目次1. JavaScript エンジンとは何ですか? 2. V8エンジン3. ランタイム環境4. ...

サブメニューをクリックする効果を実現するJavaScript

この記事では、クリック時にサブメニューを表示するためのJavaScriptの具体的なコードを参考まで...

MySQL テーブル内の重複データを検索して削除する方法の概要

時々、データベース テーブルに重複したデータが大量に保存されます。これらの重複データはリソースを浪費...

Vue v-onディレクティブの使用について

目次1. イベントのリスニング2. イベントパラメータを渡す3. イベント修飾子ケース1: クリック...

Vue はファジークエリを実装します - MySQL データベースデータ

目次1. 需要2. 実装3. 結果1. 需要入力ボックスにデータを入力し、入力結果に基づいてデータベ...

W3C 検証に合格するにはどうすればいいですか?

W3C では、さまざまなタグの規定を設定するだけでなく、Web ページの作成者が実際に W3C 規...

Vue2で配列の変更を検出できない理由と解決策

目次回避策Vue2.0 で 2 つの配列の変更を監視できないのはなぜですか?ソースコード分析ヴュー3...

XHTML: フレーム構造タグ

フレーム構造タグ <frameset></frameset>フレームを使用す...

Spring Boot のパッケージ化と Docker リポジトリへのアップロードの詳細な手順

重要な注意: この記事を読む前に、Docker コンテナに関する知識と、一般的な Docker 操作...

mysql5.7のインストールとNavicateの長期無料利用の実施手順

(I) mysql5.7のインストール: ❀詳細:無料のグリーンバージョン5.7のインストール方法は...

Linux での mysql および mysql.sock のインストールに関する問題

最近、Linux に Aphace、mysql、php をインストールするときに多くの問題に遭遇しま...

CSS と JavaScript を使用して管理ダッシュボードのレイアウトを構築するためのサンプル コード

あなたが作成するものこの新しいチュートリアルでは、CSS と JavaScript を使用して、レス...

proxy_pass がパス パスに従って転送する場合の "/" 問題の詳細な説明

nginx で proxy_pass を設定するときに、^~ に従ってパスを一致させる場合は、pro...