官網(wǎng)是這么解釋的:
有時(shí)候想同時(shí)(同級(jí))展示多個(gè)視圖,而不是嵌套展示,例如創(chuàng)建一個(gè)布局,有 sidebar(側(cè)導(dǎo)航) 和 main(主內(nèi)容) 兩個(gè)視圖,這個(gè)時(shí)候命名視圖就派上用場(chǎng)了。你可以在界面中擁有多個(gè)單獨(dú)命名的視圖,而不是只有一個(gè)單獨(dú)的出口。如果 router-view 沒(méi)有設(shè)置名字,那么默認(rèn)為 default。
如果按照他解釋的這么簡(jiǎn)單的話,完全可以在根組件app.vue里直接引入sidebar組件,注冊(cè),渲染。沒(méi)必要多此一舉。既然可以在route.config.js里面靈活配置,那就可以靈活的用。官網(wǎng)的例子:
<router-view class="view one"></router-view>
<router-view class="view two" name="a"></router-view>
<router-view class="view three" name="b"></router-view>
const router = new VueRouter({
routes: [
{
path: '/',
components: {
default: Foo,
a: Bar,
b: Baz
}
}
]
})
在app.vue里面可以多注冊(cè)幾個(gè)命名視圖,在route.config.js里不寫的話,那么這個(gè)命名視圖是不會(huì)被渲染的,這樣組件的展示個(gè)數(shù)和排版就是由route配置文件決定的了。
我的demo;
<template>
<div id="app">
<router-view name="nav"></router-view>
<router-view name="side"></router-view>
<router-view></router-view>
</div>
</template>
{
path: '/home',
name: 'Home',
components: {
default: Home,
nav: Nav,//不給的話就不渲染
side: Side
},
children: [
{ path: '/', component: Home },//不給的話就匹配不到子組件,就不渲染
{ path: 'post', component: Post }
]
}
調(diào)換組件的位置:
{
path: '/products',
name: 'Products',
components: {
default: Products,
nav: Side,//不給的話就不渲染
side: Nav //side和nav位置調(diào)換了
},
children: [
{ path: '/', component: Products},//不給的話就匹配不到子組件,就不渲染
{ path: 'post', component: Post }
]
}
渲染不同的組件
{
path: '/carts',
name: 'Carts',
components: {
default: Carts,
nav: List,//不給的話就不渲染
side: Part //side和nav位置調(diào)換了
},
children: [
{ path: '/', component: Carts},//不給的話就匹配不到子組件,就不渲染
{ path: 'post', component: Post }
]
}
上面嵌套路由的命名視圖混合在一起使用,children子組件都是渲染到default組件里面的,目前沒(méi)發(fā)現(xiàn)可以渲染到其他命名組件里的方式,有的話歡迎大神拍磚。