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 をインストールするチュートリアル図

推薦する

MySQL ルートパスワードエラー番号 1045 の解決方法

MySQLサービスを停止するWindowsでは、マイコンピュータを右クリック--管理--サービスと...

CSS を使用して親コンテナ div を img 画像で埋め、コンテナのサイズを調整する方法

ページに複数の画像を導入すると、画像のサイズがばらつくことがあります。しかし、それらを一貫したサイズ...

スクラッチ宝くじの例を実現する JavaScript キャンバス

この記事では、スクラッチ効果を実現するためのJavaScriptキャンバスの具体的なコードを参考まで...

HTML メタタグの小さなコレクション

<Head>……</head> は <HTML> のファイル ヘ...

概要ページでのフロートとクリアフロート

1. フロート: 主な目的は、テキストを画像の周囲に折り返す効果を実現することです。また、複数列レイ...

ユーザーがフォームを繰り返し送信するのを防ぐ方法の概要

重複したフォーム送信は、マルチユーザー Web アプリケーションで最も一般的で厄介な問題です。重複送...

複数の .sql ファイルを MySQL に効率的にインポートする方法の詳細な説明

MySQL には、複数の .sql ファイル (SQL ステートメントを含む) をインポートする方法...

純粋なJSを使用してセカンダリメニュー効果を実現します

この記事の例では、セカンダリメニュー効果を実現するためのJSの具体的なコードを参考までに共有していま...

CSSスクロールバースタイル設定の実装

Webkit スクロールバー スタイルのリセット1. スクロールバーには、スクロールバー ボタンとト...

Alibaba Cloud Server の詳細な展開 (グラフィック チュートリアル)

最近、Web 開発のフロントエンドとバックエンドの技術を学んだので、その後の管理を容易にするためにプ...

Dockerのヘルス検出メカニズム

コンテナの場合、最も単純なヘルスチェックはプロセス レベルのヘルスチェックであり、プロセスが稼働して...

Mysql の遅いクエリ操作の概要

MySQL の遅いクエリの説明MySQL スロー クエリ ログは、MySQL が提供するログ レコー...

DockerでRedashの中国語版をデプロイしてインストールする方法の詳細な説明

1. インストール手順 Linux 環境でのローカル インストールと比較すると、Docker のイン...

HTML で点線の境界線を設定する方法

CSSスタイルとHTMLタグ要素を使用するさまざまな HTML タグに点線の境界線を追加するために、...