Vue三層嵌套路由的示例代碼
Vue嵌套路由:
實(shí)現(xiàn)效果(路由三層嵌套,點(diǎn)擊一級(jí)tab顯示二級(jí)tab效果,二級(jí)tab點(diǎn)擊切換對(duì)應(yīng)內(nèi)容,不在tab區(qū)域里的內(nèi)容,切換時(shí)不重復(fù)渲染):
Demo訪問時(shí)路徑:http://IP:端口/#/routers/

1.建立案例文件夾 page/routers/

1 routers/index.vue
<template>
<div>
<router-link :to="{name: 'rindex_rhome'}" class="rlink" :class="{active:selected == 1}" @click.native="tabck(1)">首頁</router-link>
<router-link :to="{name: 'rindex_rnews'}" class="rlink" class="{active:selected == 2}" @click.native="tabck(2)">新聞</router-link>
<router-link :to="{name: 'rindex_ryl'}" class="rlink" class="{active:selected == 3}" @click.native="tabck(3)">娛樂</router-link>
<!-- 二級(jí)子路由頁面 -->
<router-view />
</div>
</template>
<script>
export default {
data(){
return {
selected: 1
}
},
methods: {
tabck(index){
this.selected = index; //設(shè)置tab選中項(xiàng)
}
}
}
</script>
<style>
.rlink {
padding: 5px;
margin: 5px;
margin-bottom: 10px;
display: inline-block;
text-decoration: none;
color: blue;
}
.rlink.active {
color: red;
text-decoration: underline;
}
</style>
1-1-1 routers/home/index.vue
<template>
<div>
HOME頁面信息:<br/>
<router-link :to="{name: 'rindex_rhome_Rhomezx'}" class="rlink" :class="{active:selected == 1}" @click.native="tabck(1)">最新HOME</router-link>
<router-link :to="{name: 'rindex_rhome_Rhomegj'}" class="rlink" :class="{active:selected == 2}" @click.native="tabck(2)">國際HOME</router-link>
<router-link :to="{name: 'rindex_rhome_Rhomegn'}" class="rlink" :class="{active:selected == 3}" @click.native="tabck(3)">國內(nèi)HOME</router-link>
<!-- 子路由(三層) -->
<router-view />
</div>
</template>
<script>
export default {
data(){
return {
selected: 1
}
},
methods: {
tabck(index) {
this.selected = index; //設(shè)置選中tab
}
}
}
</script>
<style>
</style>
1-1-2 routers/home/tab/gj.vue、gn.vue、zx.vue
gj.vue:
<template>
<div>
國際HOME信息:<br/>
<ul >
<li v-for="(result, index) in list" :key="index">{{result.name}}{{index}}</li>
</ul>
</div>
</template>
<script>
export default {
data(){
return {
list: [
{name:'國際HOME'},
{name:'國際HOME'},
{name:'國際HOME'}
]
}
}
}
</script>
gn.vue :
<template>
<div>
國內(nèi)HOME信息:<br/>
<ul >
<li v-for="(result, index) in list" :key="index">{{result.name}}{{index}}</li>
</ul>
</div>
</template>
<script>
export default {
data(){
return {
list: [
{name:'國內(nèi)HOME'},
{name:'國內(nèi)HOME'}
]
}
}
}
</script>
zx.vue:
<template>
<div>
最新HOME信息:<br/>
<ul >
<li v-for="(result, index) in list" :key="index">{{result.name}}{{index}}</li>
</ul>
</div>
</template>
<script>
export default {
data(){
return {
list: [
{name:'最新HOME'}
]
}
}
}
</script>
1-2 routers/news/index.vue
<template>
<div>
新聞頁面信息:<br/>
<router-link class="rlink" :class="{active:selected == 1}" @cllick.native="tabck(1)">最新新聞</router-link>
<router-link class="rlink" :class="{active:selected == 2}" @cllick.native="tabck(2)">國際新聞</router-link>
<router-link class="rlink" :class="{active:selected == 3}" @cllick.native="tabck(3)">國內(nèi)新聞</router-link>
<!-- 子路由 -->
<router-view/>
</div>
</template>
<script>
export default {
data () {
return {
selected: 1
}
},
methods: {
tabck(index){
this.selected = index; //切換tab,設(shè)置選中項(xiàng)
}
}
}
</script>
1-2-1 routers/news/tab/gj.vue、gn.vue、zx.vue
gj.vue:
<template>
<div>
國際新聞信息:<br/>
<ul >
<li v-for="(result, index) in list" :key="index">{{result.name}}{{index}}</li>
</ul>
</div>
</template>
<script>
export default {
data(){
return {
list: [
{name:'國際新聞信息'},
{name:'國際新聞信息'},
{name:'國際新聞信息'},
{name:'國際新聞信息'},
{name:'國際新聞信息'}
]
}
}
}
</script>
gn.vue:
<template>
<div>
國內(nèi)新聞信息:<br/>
<ul >
<li v-for="(result, index) in list" :key="index">{{result.name}}{{index}}</li>
</ul>
</div>
</template>
<script>
export default {
data(){
return {
list: [
{name:'國內(nèi)新聞信息'},
{name:'國內(nèi)新聞信息'}
]
}
}
}
</script>
zx.vue:
<template>
<div>
最新新聞信息:<br/>
<ul >
<li v-for="(result, index) in list" :key="index">{{result.name}}{{index}}</li>
</ul>
</div>
</template>
<script>
export default {
data(){
return {
list: [
{name:'最新新聞信息'},
{name:'最新新聞信息'}
]
}
}
}
</script>
1-3-1 routers/yl/index.vue
<template>
<div>
娛樂頁面信息:<br/>
<router-link class="rlink" :class="{active:selected == 1}" @click.native="tabck(1)">最新娛樂</router-link>
<router-link class="rlink" :class="{active:selected == 2}" @click.native="tabck(2)">明星娛樂</router-link>
<router-link class="rlink" :class="{active:selected == 3}" @click.native="tabck(3)">焦點(diǎn)娛樂</router-link>
<!-- 子路由-->
<router-view/>
</div>
<script>
export default {
data(){
return {
selected: 1
}
},
methods: {
tabck(index){
this.selected = index; //設(shè)置tab選中項(xiàng)
}
}
}
</script>
</template>
1-3-2 routers/yl/tab/jd.vue、mx.vue、zx.vue
jd.vue:
<template>
<div>
焦點(diǎn)娛樂信息:<br/>
<ul >
<li v-for="(result, index) in list" :key="index">{{result.name}}{{index}}</li>
</ul>
</div>
</template>
<script>
export default {
data(){
return {
list: [
{name:'焦點(diǎn)娛樂信息'},
{name:'焦點(diǎn)娛樂信息'}
]
}
}
}
</script>
mx.vue:
<template>
<div>
明星娛樂信息:<br/>
<ul >
<li v-for="(result, index) in list" :key="index">{{result.name}}{{index}}</li>
</ul>
</div>
</template>
<script>
export default {
data(){
return {
list: [
{name:'明星娛樂信息'},
{name:'明星娛樂信息'}
]
}
}
}
</script>
zx.vue:
<template>
<div>
最新娛樂信息:<br/>
<ul >
<li v-for="(result, index) in list" :key="index">{{result.name}}{{index}}</li>
</ul>
</div>
</template>
<script>
export default {
data(){
return {
list: [
{name:'最新娛樂信息'},
{name:'最新娛樂信息'}
]
}
}
}
</script>
2.路由配置規(guī)則(router/index.js)
....
省略導(dǎo)入路由、使用路由代碼...
....
// 嵌套路由的使用:第一層
import Rindex from '../page/routers/index'
// 嵌套路由的使用:第二層
import Rhome from '../page/routers/home/index'
// 嵌套路由的使用:第三層
import Rhomezx from '../page/routers/home/tab/zx'
import Rhomegj from '../page/routers/home/tab/gj'
import Rhomegn from '../page/routers/home/tab/gn'
import Rnews from '../page/routers/news/index'
import Rnewszx from '../page/routers/news/tab/zx'
import Rnewsgj from '../page/routers/news/tab/gj'
import Rnewsgn from '../page/routers/news/tab/gn'
import Ryl from '../page/routers/yl/index'
import Rylzx from '../page/routers/yl/tab/zx'
import Rylmx from '../page/routers/yl/tab/mx'
import Ryljd from '../page/routers/yl/tab/jd'
// 路由規(guī)則配置:
export default new Router({
routes : [
{
name: 'rindex',
path: '/routers',
component: Rindex,
redirect: {name: 'rindex_rhome'}, // 跳轉(zhuǎn)到下一級(jí)第一個(gè)
children: [
{
name: 'rindex_rhome',
path: 'rindex_rhome', //如果這里不使用 "/rhome" 則表示是歸屬于上級(jí)路由(上級(jí)luyou/子path),如果使用 "/rhome" 則表示根路徑下訪問
component: Rhome,
redirect: {name: 'rindex_rhome_Rhomezx'}, //跳轉(zhuǎn)到下級(jí)第一層
children: [
{
name: 'rindex_rhome_Rhomezx',
path: 'rindex_rhome_Rhomezx',
component: Rhomezx
},
{
name: 'rindex_rhome_Rhomegj',
path: 'rindex_rhome_Rhomegj',
component: Rhomegj
},
{
name: 'rindex_rhome_Rhomegn',
path: 'rindex_rhome_Rhomegn',
component: Rhomegn
}
]
},
{
name: 'rindex_rnews',
path: 'rindex_rnews',
component: Rnews,
redirect: {name: 'rindex_rnews_Rnewszx'},
children: [
{
name: 'rindex_rnews_Rnewszx',
path: 'rindex_rnews_Rnewszx',
component: Rnewszx
},
{
name: 'rindex_rnews_Rnewsgj',
path: 'rindex_rnews_Rnewsgj',
component: Rnewsgj
},
{
name: 'rindex_rnews_Rnewsgn',
path: 'rindex_rnews_Rnewsgn',
component: Rnewsgn
}
]
},
{
name: 'rindex_ryl',
path: 'rindex_ryl',
component: Ryl,
redirect: {name: 'rindex_ryl_rylzx'},
chidren:[
{
name: 'rindex_ryl_rylzx',
path: 'rindex_ryl_rylzx',
component: Rylzx
},
{
name: 'rindex_ryl_rylmx',
path: 'rindex_ryl_rylmx',
component: Rylmx
},
{
name: 'rindex_ryl_ryljd',
path: 'rindex_ryl_ryljd',
component: Ryljd
}
]
}
]
}
]
});
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
100行代碼理解和分析vue2.0響應(yīng)式架構(gòu)
通過100行代碼幫助大家理解和分析vue2.0響應(yīng)式架構(gòu)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
在vue中封裝的彈窗組件使用隊(duì)列模式實(shí)現(xiàn)方法
這篇文章主要介紹了在vue中封裝的彈窗組件使用隊(duì)列模式實(shí)現(xiàn)方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
vue使用pdf-dist實(shí)現(xiàn)pdf預(yù)覽以及水印添加
這篇文章主要為大家詳細(xì)介紹了vue如何使用pdf-dist實(shí)現(xiàn)pdf預(yù)覽以及水印添加的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10
vue綁定數(shù)字類型 value為數(shù)字的實(shí)例
這篇文章主要介紹了vue綁定數(shù)字類型 value為數(shù)字的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Vue自定義指令實(shí)現(xiàn)checkbox全選功能的方法
下面小編就為大家分享一篇Vue自定義指令實(shí)現(xiàn)checkbox全選功能的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-02-02
Vue Router4中params傳參失效和報(bào)錯(cuò)問題的解決方法
在使用vue-router4中params 進(jìn)行路由組件之間傳參,跳轉(zhuǎn)頁面接收不了并報(bào)錯(cuò),本文給大家介紹了Vue Router4中params傳參失效和報(bào)錯(cuò)問題的解決方法,需要的朋友可以參考下2024-03-03
詳解vue+nodejs獲取多個(gè)表數(shù)據(jù)的方法
這篇文章主要為大家介紹了vue+nodejs獲取多個(gè)表數(shù)據(jù)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-12-12

