8. Vue router-view页面布局
2022-04-30 本文已影响0人
zouhao1985
1.概述
常见的管理系统都有一个树形的菜单,在日常开发中,这个一般是以模板的形式存在,开发人员只要开发对应的业务页面就可以了,无须考虑通用的菜单模板。今天对vue-router实现的模板功能进行说明。
首先管理系统都有一个登陆界面,这个登陆界面是没有菜单的;登陆到系统首页的时候才会有菜单。本章节的内容就说明这两个页面的实现。
2.vue-router实现
实现过程中,我们可以认为登录页是不需要模板的;而系统首页是需要一个模板(不用模板的话,开发其他业务功能界面就需要复制菜单的代码),这里我们使用到了vue-router配置属性children。
关键代码如下:
# src/router/login.js
const routes = [
{
path: "/login",
component: () => import("../view/login/Login"),
},
{
path: "/menu",
component: () => import("@/view/Menu"),
},
{
path: "/dashboard",
component: () => import("@/view/Layout"), // 模板页面
children: [
{
path: 'dashboard1',
name: 'dashboard1',
component: () => import("@/view/Dashboard")
}
]
},
];
export default routes;
模板页面,这里使用了elementUI
# src/view/Layout.vue
<template>
<div>
<el-container>
<el-header>
<el-menu
class="el-menu-demo"
mode="horizontal"
background-color="#545c64"
text-color="#fff"
active-text-color="#ffd04b"
@select="test"
>
<el-menu-item index="1"
><router-link to="/dashboard/dashboard2"
>处理中心</router-link
></el-menu-item
>
<el-submenu index="2">
<template slot="title">我的工作台</template>
<el-menu-item index="2-1">选项1</el-menu-item>
<el-menu-item index="2-2">选项2</el-menu-item>
<el-menu-item index="2-3">选项3</el-menu-item>
<el-submenu index="2-4">
<template slot="title">选项4</template>
<el-menu-item index="2-4-1">选项1</el-menu-item>
<el-menu-item index="2-4-2">选项2</el-menu-item>
<el-menu-item index="2-4-3">选项3</el-menu-item>
</el-submenu>
</el-submenu>
<el-menu-item index="3"><router-link to="/menu"
>消息中心</router-link
></el-menu-item>
<el-menu-item index="4"
><a href="https://www.ele.me" target="_blank"
>订单管理</a
></el-menu-item
>
</el-menu>
</el-header>
<el-main>
<router-view></router-view>
</el-main>
<el-footer>Footer</el-footer>
</el-container>
</div>
</template>
<script>
export default {
name: "Layout",
data() {
return {
// activeIndex: "1",
activeIndex2: "1",
};
},
methods: {
test() {
console.log('test')
},
handleSelect(key, keyPath) {
console.log(key, keyPath)
}
}
}
</script>
3.总结
从路由的配置中可以看到,login页面是没有children属性,所以它直接展示对应的login页面。但是dashboard页面有使用了一个模板,在dashboard中的内容展示在Layout页面的router-view标签中。
如果开发其他的业务功能页面(需要登陆),就可以把页面放在dashboard的children元素中,这样就可以复用菜单的功能了。
如果系统中有不同的模块,其菜单布局不一样,那么可以在router配置中先定义不同的模块,配置不同的模板,对应的页面放在不同的模块中。
4.源代码下载
https://gitee.com/animal-fox_admin/learn-vue-web
branch:lesson5