48. Vue路由-使用命名视图实现经典布局

需求

在前面的路由篇章中,我在写router-view的时候并没有什么特征标识,也就是所有路由映射的组件都可以显示出来。但是在一些经典后台布局中,一般什么组件在哪里显示是需要固定好的,如下:

48. Vue路由-使用命名视图实现经典布局
image-20200222225250892

那么这时候就需要「命名视图」了,基本语法:<router-view name="视图名称"></router-view>

好了,下面来写一个小例子。

示例

1.首先编写三个首页组件

		<script>
// 1. 定义 (路由) 组件。

// 创建header组件
var header = {
template: '<h1 class="header">header组件</h1>',
}

// 创建left组件
var left = {
template: '<h1 class="left">left组件</h1>',
}

// 创建main组件
var main = {
template: '<h1 class="main">main组件</h1>',
}

在创建了这三个区域的组件之后,下面就是考虑如何在首页一个路由/下定义这三个组件。

2.定义三个组件同一个路径的路由规则

			// 2. 定义路由
var routes = [{
path: '/',
// 单个路径可以配置多个组件
components: {
'default': header, // 默认router-view的命名
'left': left,
'main': main,
},
}]

3.设置三个组件在app中的使用

		<div id="app">

<!-- default命名视图 -->
<router-view></router-view>
<div class="container">
<!-- left左侧栏命名视图 -->
<router-view name="left"></router-view>
<!-- main中心位置的命名视图 -->
<router-view name="main"></router-view>
</div>

</div>

4.浏览器显示如下:

48. Vue路由-使用命名视图实现经典布局
image-20200222233813421

那么剩下的工作就是设置一下样式,将这三个组件布局一下即可。

5.设置样式布局

		<style>
html,
body {
margin: 0;
padding: 0;
}

.header {
background-color: orange;
height: 80px;
}

h1 {
margin: 0;
padding: 0;
font-size: 16px;
}

.container {
display: flex;
height: 900px;
}

.left {
background-color: lightgreen;
flex: 2;
}

.main {
background-color: lightpink;
flex: 8;
}
</style>

布局显示如下:

48. Vue路由-使用命名视图实现经典布局
image-20200222234116870

6.完成示例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- 导入vue.js库 -->
<script src="lib/vue.js"></script>
<!-- 导入vue-router -->
<script src="lib/vue-router.js"></script>
<style>
html,
body {
margin: 0;
padding: 0;
}

.header {
background-color: orange;
height: 80px;
}

h1 {
margin: 0;
padding: 0;
font-size: 16px;
}

.container {
display: flex;
height: 900px;
}

.left {
background-color: lightgreen;
flex: 2;
}

.main {
background-color: lightpink;
flex: 8;
}
</style>
</head>
<body>

<div id="app">

<!-- default命名视图 -->
<router-view></router-view>
<div class="container">
<!-- left左侧栏命名视图 -->
<router-view name="left"></router-view>
<!-- main中心位置的命名视图 -->
<router-view name="main"></router-view>
</div>

</div>

<script>
// 1. 定义 (路由) 组件。

// 创建header组件
var header = {
template: '<h1 class="header">header组件</h1>',
}

// 创建left组件
var left = {
template: '<h1 class="left">left组件</h1>',
}

// 创建main组件
var main = {
template: '<h1 class="main">main组件</h1>',
}


// 2. 定义路由
var routes = [{
path: '/',
// 单个路径可以配置多个组件
components: {
'default': header, // 默认router-view的命名
'left': left,
'main': main,
},
}]



// 3. 创建 router 实例,然后传 `routes` 配置
// 你还可以传别的配置参数, 不过先这么简单着吧。
var router = new VueRouter({
routes, // (缩写) 相当于 routes: routes
})

// 创建vue的实例
var vm = new Vue({
el: '#app',
data: {},
methods: {},
// 注册局部组件,注意:下面使用vue-router的话,不需要在这里注册组件
components: {},
// 将路由规则对象,注册到 vm 实例上,用来监听 URL 地址的变化,然后展示对应的组件
router, // 等价于 router: router
})
</script>

</body>
</html>

交流QQ群:




48. Vue路由-使用命名视图实现经典布局






48. Vue路由-使用命名视图实现经典布局






点击下面,查看更多Vue系列文章

48. Vue路由-使用命名视图实现经典布局48. Vue路由-使用命名视图实现经典布局





48. Vue路由-使用命名视图实现经典布局






原文始发于微信公众号(海洋的渔夫):48. Vue路由-使用命名视图实现经典布局

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/32650.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!