目次
Vue CLI を使用したセットアップ
基本コード
次に、
このトピックに関するもう 1 つの注意事項 - 動的セグメント (例:
ホームページ ウェブフロントエンド Vue.js Vue.jsでネストしたルーティングを使う方法の紹介

Vue.jsでネストしたルーティングを使う方法の紹介

Dec 01, 2020 pm 05:26 PM
vue.js ネストされたルーティング

Vue.jsでネストしたルーティングを使う方法の紹介

Vue.js シングル ページ アプリケーション (SPA) は非常に複雑になるため、Vue ルーティング とネストされたルーティングが必要になり始めます。ネストされたルーティングにより、より複雑なユーザー インターフェイスとコンポーネントを相互にネストすることができます。 Vue Router でのネストされたルーティングの有用性を示すために、比較的単純なユースケースを作成してみましょう。

Vue CLI を使用したセットアップ

まだインストールされていない場合は、次のコマンドを実行して Vue CLI をグローバルにインストールします:

$ npm install -g @vue/cli
ログイン後にコピー

or

$ yarn global add @vue/cli
ログイン後にコピー

Nowコマンドからインストールできます。 次に、vue コマンドを実行します。 alligator-nest という Vue アプリを作成しましょう:

$ vue create alligator-nest
ログイン後にコピー

プロンプトでデフォルトのプリセットを選択します (Enter キーを押します)。その後、次のコマンドを実行します。

$ npm install vue-router
ログイン後にコピー

次に、任意のエディタで alligator-nest ディレクトリを開きます。

基本コード

次の CSS は、UI の要素を配置するのに役立ちます。これをスタイルシート ファイルとして public/ フォルダーに追加し、public/index.html で参照します。これを行うには、CSS グリッド を使用します。

grid.css

.row1 {
  grid-row-start: 1;
  grid-row-end: 2;
}

.row12 {
  grid-row-start: 1;
  grid-row-end: 3;
}

.row123 {
  grid-row-start: 1;
  grid-row-end: 4;
}

.row2 {
  grid-row-start: 2;
  grid-row-end: 3;
}

.row23 {
  grid-row-start: 2;
  grid-row-end: 4;
}

.row3 {
  grid-row-start: 3;
  grid-row-end: 4;
}

.col1 {
  grid-column-start: 1;
  grid-column-end: 2;
}

.col12 {
  grid-column-start: 1;
  grid-column-end: 3;
}

.col123 {
  grid-column-start: 1;
  grid-column-end: 4;
}

.col1234 {
  grid-column-start: 1;
  grid-column-end: 5;
}

.col2 {
  grid-column-start: 2;
  grid-column-end: 3;
}

.col23 {
  grid-column-start: 2;
  grid-column-end: 4;
}

.col234 {
  grid-column-start: 2;
  grid-column-end: 5;
}

.col3 {
  grid-column-start: 3;
  grid-column-end: 4;
}

.col34 {
  grid-column-start: 3;
  grid-column-end: 5;
}

.col4 {
  grid-column-start: 4;
  grid-column-end: 5;
}
ログイン後にコピー

次に、vue-cli# を実行しましょう。 ## デフォルトのファイルにいくつかの変更を追加しました。

HelloWorld.vuesrc/components フォルダーから削除し、それに関連するものをすべて src/App.vue から削除します。 App.vue の HTML マークアップと CSS スタイルに次の変更を加えます。

<template>
  <div id="app">
    <h1 class="row1 col12">Alligator Nest</h1>
    <a class="row1 col3">Travels</a>
    <a class="row1 col4">About</a>
    <div class="row2 col234"></div>
  </div>
</template>
html, body {
  height: 100vh;
  width: 100vw;
  padding: 0;
  margin: 0;
}

#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  color: #2c3e50;
  padding: 2%;
  height: 100%;
  display: grid;
  grid-template-rows: 20% 80%;
  grid-template-columns: 25% 25% 25% 25%;
}
ログイン後にコピー

プロジェクトのルート ディレクトリで

npm runserve を実行している場合は、ブラウザの localhost:8080 にカーソルを置くと、フレーム レイアウトが表示されます。これらの display:grid プロパティは便利です。これで、ルートの作成を開始できます。

Vue ルーティングを入力します

/components フォルダーに AboutPage.vue という名前のコンポーネントを作成します。次のようになります。

<template>
  <div>
    <h2>About</h2>
    <p>Alligators were around during the time of the dinosaurs.</p>
  </div>
</template>

<script>
  export default {
    name: &#39;AboutPage&#39;,
  }
</script>

<style scoped>
  
</style>
ログイン後にコピー

これで、

main.js ファイルには /about ルートが必要になります。こんな感じです。

import VueRouter from &#39;vue-router&#39;;
import Vue from &#39;vue&#39;;
import App from &#39;./App.vue&#39;;

Vue.config.productionTip = false;

import VueRouter from &#39;vue-router&#39;;
Vue.use(VueRouter);

import AboutPage from &#39;./components/AboutPage.vue&#39;;

const routes = [
  { path: &#39;/about&#39;, component: AboutPage },
]

const router = new VueRouter({
  routes
})

new Vue({
  render: h => h(App),
  router
}).$mount(&#39;#app&#39;);
ログイン後にコピー

最後に、

App.vue に戻り、「About」アンカー タグを ## 属性 to="/about" #&lt に変更します。 ;router-link> タグ。次に、2 番目の div<router-view> タグに変更します。グリッド配置クラスのプロパティは変更しないようにしてください。 これで、「About」ページのルーティングが処理される、完全に機能するサイト スケルトンが完成しました。

ここではルーティング機能に焦点を当てているため、スタイルについてはあまり時間をかけません。それでも、

Travels

ページをもう少し洗練されたものにしたいと考えています。

まず、
AboutPage

の作成と同じ方法で TravelPage を作成します。 main.js で参照します。 次の 2 つのコンポーネントも作成する必要があります。これらは最終的に

TravelPage.vue

にネストされます:

TravelAmericaPage.vue

<template>
  <div>
    <p>Alligators can be found in the American states of Louisiana and Florida.</p>
  </div>
</template>

<script>
  export default {
    name: &#39;TravelAmericaPage&#39;
  }
</script>

<style scoped>
</style>
ログイン後にコピー

TravelChinaPage.vue

<template>
  <div>
    <p>Alligators can be found in China&#39;s Yangtze River Valley.</p>
  </div>
</template>

<script>
  export default {
    name: &#39;TravelChinaPage&#39;
  }
</script>

<style scoped>

</style>
ログイン後にコピー
ネストされたルーティングの構成

次に、

main.js

TravelPage .vue の両方を更新しましょう。 を使用して、これらのネストされたルートを参照します。 main.js は、routes 定数の次の定義を持つように更新する必要があります: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>const routes = [ { path: &amp;#39;/travel&amp;#39;, component: TravelPage, children: [ { path: &amp;#39;/travel/america&amp;#39;, component: TravelAmericaPage }, { path: &amp;#39;/travel/china&amp;#39;, component: TravelChinaPage} ] }, { path: &amp;#39;/about&amp;#39;, component: AboutPage } ];</pre><div class="contentsignin">ログイン後にコピー</div></div>子のネストは無期限に継続できることに注意してください。

TravelPage.vue

は次のように記述できます:

TravelPage.vue

<template>
  <div id="travel">
    <h2 class="row1">Travels</h2>
    <div class="flex-container row2">
      <router-link to="/travel/america">America</router-link>
      <router-link to="/travel/china">China</router-link>
    </div>
    <router-view class="row3"></router-view>
  </div>
</template>

<script>
  export default {
    name: &#39;TravelPage&#39;
  }
</script>

<style scoped>
div {
  text-align: center;
}

#travel {
  display: grid;
  grid-template-rows: 20% 40% 40%;
}

.flex-container {
  display: flex;
  justify-content: space-around;
}
</style>
ログイン後にコピー

checkoutlocalhost :8080 、「旅行」ページには 2 つのサブページが含まれていることがわかります。いずれかのリンクをクリックすると、それに応じて URL が更新されます。

概要このチュートリアルが、ネストされたルーティングの使用方法を理解するのに役立つことを願っています。

このトピックに関するもう 1 つの注意事項 - 動的セグメント (例:

path:'/location/:id'

) を使用してルートを定義できます。その ID は、それらのルートのビューで

this.$route.params

として参照できます。この機能は、Web サイトやアプリでより特定の種類のデータ (ユーザー、画像など) を表示する場合に便利です。 英語の元のアドレス: https://alligator.io/vuejs/nested-routes/

翻訳アドレス: https://segmentfault.com/a/1190000021930656

関連する推奨事項:

2020 フロントエンド vue インタビューの質問の概要 (回答付き)

vue チュートリアル推奨: 2020 年の最新の vue.js ビデオ チュートリアル 5 選

プログラミング関連の知識の詳細については、プログラミング入門

をご覧ください。 !

以上がVue.jsでネストしたルーティングを使う方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

vite が .env ファイルを解析する方法についての詳細な説明 vite が .env ファイルを解析する方法についての詳細な説明 Jan 24, 2023 am 05:30 AM

Vue フレームワークを使用してフロントエンド プロジェクトを開発する場合、デプロイ時に複数の環境をデプロイすることになりますが、開発環境、テスト環境、オンライン環境で呼び出されるインターフェイス ドメイン名が異なることがよくあります。どうすれば区別できるでしょうか?それは環境変数とパターンを使用することです。

Ace コード エディターを Vue プロジェクトに統合する方法の詳細な図による説明 Ace コード エディターを Vue プロジェクトに統合する方法の詳細な図による説明 Apr 24, 2023 am 10:52 AM

Ace は、JavaScript で書かれた埋め込み可能なコード エディターです。 Sublime、Vim、TextMate などのネイティブ エディターの機能とパフォーマンスに匹敵します。あらゆる Web ページや JavaScript アプリケーションに簡単に埋め込むことができます。 Ace は Cloud9 IDE のメイン エディタとして維持されており、Mozilla Skywriter (Bespin) プロジェクトの後継です。

vue のコンポーネント化とモジュール化の違いは何ですか vue のコンポーネント化とモジュール化の違いは何ですか Dec 15, 2022 pm 12:54 PM

コンポーネント化とモジュール化の違い: モジュール化はコード ロジックの観点から分割され、コードの階層化された開発が容易になり、各機能モジュールの機能の一貫性が保証されます。コンポーネント化は UI インターフェイスの観点から計画され、フロントエンドのコンポーネント化により UI コンポーネントの再利用が容易になります。

Vue3 で単体テストを作成する方法を調べる Vue3 で単体テストを作成する方法を調べる Apr 25, 2023 pm 07:41 PM

Vue.js は、今日のフロントエンド開発において非常に人気のあるフレームワークとなっています。 Vue.js が進化し続けるにつれて、単体テストの重要性がますます高まっています。今日は、Vue.js 3 で単体テストを作成する方法を検討し、いくつかのベスト プラクティスと一般的な問題と解決策を提供します。

vue3 の reactive() について詳しく話しましょう vue3 の reactive() について詳しく話しましょう Jan 06, 2023 pm 09:21 PM

前書き: vue3 の開発では、reactive は応答性の高いデータを実装するメソッドを提供します。これは日常の開発で頻繁に使用される API です。この記事では、著者はその内部動作メカニズムを探ります。

JSX 構文と Vue のテンプレート構文の簡単な比較 (利点と欠点の分析) JSX 構文と Vue のテンプレート構文の簡単な比較 (利点と欠点の分析) Mar 23, 2023 pm 07:53 PM

Vue.js では、開発者は、JSX 構文とテンプレート構文という 2 つの異なる構文を使用してユーザー インターフェイスを作成できます。どちらの構文にもそれぞれ長所と短所があるので、それらの違い、長所と短所について説明します。

Vue3 動的コンポーネントで例外を処理する方法の簡単な分析 Vue3 動的コンポーネントで例外を処理する方法の簡単な分析 Dec 02, 2022 pm 09:11 PM

Vue3 動的コンポーネントで例外を処理するにはどうすればよいですか?次の記事では、Vue3 の動的コンポーネントの例外処理方法について説明します。

vue がファイル スライス アップロードを実装する方法の簡単な分析 vue がファイル スライス アップロードを実装する方法の簡単な分析 Mar 24, 2023 pm 07:40 PM

実際の開発プロジェクトのプロセスでは、比較的大きなファイルをアップロードする必要がある場合がありますが、その場合はアップロードが比較的遅くなり、バックグラウンドでフロントエンドがファイルのスライスをアップロードする必要がある場合があります。これは非常に簡単です。たとえば、1Aギガバイトのファイル ストリームはいくつかの小さなファイル ストリームに分割され、インターフェイスはそれぞれの小さなファイル ストリームを配信するように要求されます。

See all articles