Appearance
命名视图
有时候向同时(同级)展示多个视图,而不是嵌套展示
js
<router-view class="view left-sidebar" name="LeftSidebar" />
<router-view class="view main-content" />
<router-view class="view right-sidebar" name="RightSidebar" />这个时候命名视图就派上用场了。你可以在界面中拥有多个单独命名的视图,而不是只有一个单独的出口。如果 router-view 没有设置名字,那么默认为 default。
对于同个路由,多个视图就需要多个组件。确保正确使用 components 配置 (带上 s):
js
const router = createRouter({
history: createWebHashHistory(),
routes: [
{
path: '/',
components: {
default: Home,
// LeftSidebar: LeftSidebar 的缩写
LeftSidebar,
// 它们与 `<router-view>` 上的 `name` 属性匹配
RightSidebar,
},
},
],
})嵌套命名视图
我们也有可能使用命名视图创建嵌套师傅的复杂布局.这是需要命名用到的嵌套router-view组件.以下面视图为例:

布局结构为:

Nav是一个常规的组件UserSetting是一个视图组件UserEmailsSubscriptions、UserProfile、UserProfilePreview是嵌套的视图组件。
忽略CSS代码,UserSettings组件应该类似下面这段代码:
html
<!-- UserSettings.vue -->
<div>
<h1>User Settings</h1>
<NavBar />
<router-view />
<router-view name="helper" />
</div>那么可以通过这段路由配置来实现上面的布局
js
{
path: '/settings',
// 你也可以在顶级路由就配置命名视图
component: UserSettings,
children: [{
path: 'emails',
component: UserEmailsSubscriptions
}, {
path: 'profile',
components: {
default: UserProfile,
helper: UserProfilePreview
}
}]
}需要注意:profile路由使用的是components