Vue でネストされた子ルート. JS Web アプリケーション
8190 ワード
Web アプリケーションの優れたユーザー インターフェイスを作成するときは、可能な限り多くの機能を再利用する必要があります.アプリケーション内で子ルートを親ルートに割り当てることで、Vue.JS でマルチレベルの UI を作成できます.これにより、新しいナビゲーションの可能性への扉が開かれます.
Vue.Js Web アプリケーションでネストされたルートに子ルートとビューを割り当てる方法を探ります.
簡単にするために、新しい Vue.Js プロジェクトを作成することから始めます. Vue CLI がインストールされていると仮定して、次のコマンドを実行します.
CLI によって提示された質問に回答します.スタンドアロン プロジェクトを使用するか、ランタイムのみのプロジェクトを使用するかに違いはありません.重要なのは、vue-router ライブラリがインストールされていることです.
最後に、プロジェクトの足場を確立した後、次のコマンドを実行します.
いくつかのクールな UI 機能の準備として、親ルートと子ルートの作業を開始できます.
新しい CLI 生成プロジェクトに src/components/HelloWorld.vue ファイルが必要です.そのままでも構いませんが、この例の流れを保つために src/components/page1.vue に名前を変更すると、把握しやすくなります.親ビューは、このコンポーネントによって表されます.
プロジェクトの src/components/page1.vue ファイルに以下を含めます.
プロジェクトをスキャフォールディングすると、上記のコードに似たものが得られます.ただし、ブロックにタグを配置したことがわかります.これらのタグは、作成するすべてのルートのパススルーとして機能します.これらのタグは子ビューに渡されます.
プロジェクトの src/App.vue ファイルを開くと、タグが表示されます. src/App.vue ファイル内のこれらのタグは、親ルートによって使用されます.
タグはブロックのルート レベルでは使用できないことに注意してください.別の言い方をすれば、これは機能しません.
代わりに、タグは
要素または類似のもの.
親ビューが邪魔にならないので、入れ子にする予定の子ビューにピボットしましょう.プロジェクト内に src/components/child1.vue ファイルを作成し、次のコードを含めます.
上記のコードでは、テキスト行を表示するだけです.使命は、前の親ビューが表示しているものと一緒に表示することです.
2 つのコンポーネントが邪魔にならないので、vue-router ライブラリと一緒にルートを配線することに集中しましょう.
この特定の例のすべてのルートは、プロジェクトの src/router/index.js ファイルにあります.これを開くと、以前に名前を変更した HelloWorld.vue ファイルがまだ参照されていることがわかります.ファイル全体を変更するだけです.
プロジェクトの src/router/index.js ファイル内に、以下を含めます.
プロジェクトを実行すると、アプリケーションのルートに移動すると、http://localhost:8080/ #/page1/child1 にリダイレクトされ、親ビューとネストされた子ビューの両方のデータが画面にレンダリングされることがわかります.
すごいでしょ?
子ルートをレンダリングする方法はこれだけではありません.たとえば、デフォルトの子ルートを構成して、子パスに直接移動する必要がないようにすることができます.
src/router/index.js ファイルへの次の変更に注意してください.
上記のコードでは、親ルートの名前を削除し、子パス属性を空白にしています.これで、http://localhost:8080/#/page1 パスに移動すると、子がレンダリングされます.そのパスに直接移動する必要がなくなります.
ネストされた子ルートを Vue.js Web アプリケーションに含める方法を想像しただけです.入れ子になった子を持つことは、とりわけ、テンプレート化に関しては便利です.たとえば、複数の設定カテゴリがあるアプリケーションの設定セクションがあるとします.設定セクションは多くの親ルートの 1 つになる可能性があり、各カテゴリはその親の子になる可能性があります.😅
Vue.Js Web アプリケーションでネストされたルートに子ルートとビューを割り当てる方法を探ります.
Vue CLI を使用して新しい Vue.js プロジェクトを作成する
簡単にするために、新しい Vue.Js プロジェクトを作成することから始めます. Vue CLI がインストールされていると仮定して、次のコマンドを実行します.
vue create nested-project
CLI によって提示された質問に回答します.スタンドアロン プロジェクトを使用するか、ランタイムのみのプロジェクトを使用するかに違いはありません.重要なのは、vue-router ライブラリがインストールされていることです.
最後に、プロジェクトの足場を確立した後、次のコマンドを実行します.
cd nested-project
npm install
いくつかのクールな UI 機能の準備として、親ルートと子ルートの作業を開始できます.
親ルートと子ルートを表すコンポーネントの追加
新しい CLI 生成プロジェクトに src/components/HelloWorld.vue ファイルが必要です.そのままでも構いませんが、この例の流れを保つために src/components/page1.vue に名前を変更すると、把握しやすくなります.親ビューは、このコンポーネントによって表されます.
プロジェクトの src/components/page1.vue ファイルに以下を含めます.
<template>
<div class="page1">
<h1>{{ msg }}</h1>
<router-view></router-view>
</div>
</template>
<script>
export default {
name: 'Page1',
data () {
return {
msg: 'Welcome to Your Vue.js App'
}
}
}
</script>
<style scoped>
h1, h2 {
font-weight: normal;
}
a {
color: #42b983;
}
</style>
プロジェクトをスキャフォールディングすると、上記のコードに似たものが得られます.ただし、ブロックにタグを配置したことがわかります.これらのタグは、作成するすべてのルートのパススルーとして機能します.これらのタグは子ビューに渡されます.
プロジェクトの src/App.vue ファイルを開くと、タグが表示されます. src/App.vue ファイル内のこれらのタグは、親ルートによって使用されます.
タグはブロックのルート レベルでは使用できないことに注意してください.別の言い方をすれば、これは機能しません.
<template>
<router-view></router-view>
</template>
代わりに、タグは
<div>
要素または類似のもの.
親ビューが邪魔にならないので、入れ子にする予定の子ビューにピボットしましょう.プロジェクト内に src/components/child1.vue ファイルを作成し、次のコードを含めます.
<template>
<div class="child1">
<p>{{ footnote }}</p>
</div>
</template>
<script>
export default {
name: 'Child1',
data () {
return {
footnote: 'Created by The Developer'
}
}
}
</script>
<style scoped></style>
上記のコードでは、テキスト行を表示するだけです.使命は、前の親ビューが表示しているものと一緒に表示することです.
2 つのコンポーネントが邪魔にならないので、vue-router ライブラリと一緒にルートを配線することに集中しましょう.
Vue.Js ルーターの設計
この特定の例のすべてのルートは、プロジェクトの src/router/index.js ファイルにあります.これを開くと、以前に名前を変更した HelloWorld.vue ファイルがまだ参照されていることがわかります.ファイル全体を変更するだけです.
プロジェクトの src/router/index.js ファイル内に、以下を含めます.
import Vue from 'vue'
import Router from 'vue-router'
import Page1 from '@/components/page1'
import Child1 from '@/components/child1'
Vue.use(Router)
export default new Router({
routes: [
{
path: "/",
redirect: {
name: "Child1"
}
},
{
path: '/page1',
name: 'Page1',
component: Page1,
children: [
{
path: "child1",
name: "Child1",
component: Child1
}
]
}
]
})
プロジェクトを実行すると、アプリケーションのルートに移動すると、http://localhost:8080/ #/page1/child1 にリダイレクトされ、親ビューとネストされた子ビューの両方のデータが画面にレンダリングされることがわかります.
すごいでしょ?
子ルートをレンダリングする方法はこれだけではありません.たとえば、デフォルトの子ルートを構成して、子パスに直接移動する必要がないようにすることができます.
src/router/index.js ファイルへの次の変更に注意してください.
import Vue from 'vue'
import Router from 'vue-router'
import Page1 from '@/components/page1'
import Page2 from '@/components/page2'
import Child1 from '@/components/child1'
Vue.use(Router)
export default new Router({
routes: [
{
path: "/",
redirect: {
name: "Child1"
}
},
{
path: '/page1',
component: Page1,
children: [
{
path: "",
name: "Child1",
component: Child1
}
]
}
]
})
上記のコードでは、親ルートの名前を削除し、子パス属性を空白にしています.これで、http://localhost:8080/#/page1 パスに移動すると、子がレンダリングされます.そのパスに直接移動する必要がなくなります.
結論
ネストされた子ルートを Vue.js Web アプリケーションに含める方法を想像しただけです.入れ子になった子を持つことは、とりわけ、テンプレート化に関しては便利です.たとえば、複数の設定カテゴリがあるアプリケーションの設定セクションがあるとします.設定セクションは多くの親ルートの 1 つになる可能性があり、各カテゴリはその親の子になる可能性があります.😅
Reference
この問題について(Vue でネストされた子ルート. JS Web アプリケーション), 我々は、より多くの情報をここで見つけました https://dev.to/mianazanfarooq/nested-child-routes-in-a-vue-js-web-application-34afテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol