Container页面搭建与Router路由配置
1. 页面布局
1.1. 容器-container
布局的主题思路:

一直项目的入口是App.vue,那我们就在App.vue进行布局:
el-container / el-header / el-aside / el-main:https://element.eleme.cn/#/zh-CN/component/container
用于布局的容器组件,方便快速搭建页面的基本结构:
<el-container>
:外层容器。当子元素中包含 <el-header>
或 <el-footer>
时,全部子元素会垂直上下排列,否则会水平左右排列。
<el-header>
:顶栏容器。
<el-aside>
:侧边栏容器。
<el-main>
:主要区域容器。
<el-footer>
:底栏容器。
一般是用不上footer,也可以用来写一些版本号或者个人信息之类的。



等等还有很多,详细可以看文档。
文档的下面有一些属性,排列方式,上下,宽度等等。
1.2. 布局规划
我们打算搭建的结构如下,一共需要两个大的container标签,一个container是上面的header,一个container是下面的Aside+Main。

App.vue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| <template> <div id="app">
<el-container> <el-header style="background-color: #4c535a;"> 头部内容
</el-header> </el-container>
<el-container>
<el-aside style="overflow: hidden; min-height: 100vh; background-color: #545c64; width: 250px;">
侧边栏内容
</el-aside>
<el-main>
主体内容
</el-main> </el-container> <router-view/> </div> </template>
|
可以直接看到效果:

下面我们添加一个logo:
1 2 3 4 5 6
| <el-header style="background-color: #4c535a;"> <img src="@/assets/logo.png" alt="" style="width: 40px; position: relative; top: 10px;"> <span style="font-size: 20px; margin-left: 15px; color: rgb(132, 127, 127);">Vue学习项目</span> </el-header>
|
效果:

菜单组件文档menu:https://element.eleme.cn/#/zh-CN/component/menu
Nav是navigation的缩写,意思是跳转。和跳转相关的都在naviation标签里面。
我们找到左侧菜单的组件el-menu。找到源代码(el-menu标签),直接粘贴进去aside标签中。可以直接看到效果。
因为我们上面直接已经进行了布局,所以这次我们直接粘贴到之前的容器里面就行:
可以看到效果:

App.vue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| <el-container> <el-aside style=" overflow: hidden; min-height: 100vh; background-color: #545c64; width: 250px; ">
<el-menu :default-active="$route.path" router class="el-menu-vertical-demo" @open="handleOpen" @close="handleClose" background-color="#545c64" text-color="#fff" active-text-color="#ffd04b"> <el-menu-item index="/"> <i class="el-icon-s-home"></i><span slot="title">系统首页</span> </el-menu-item>
<el-submenu index="2"> <template slot="title"> <i class="el-icon-location"></i><span>系统管理</span> </template> <el-menu-item index="/admin">管理员信息</el-menu-item> <el-menu-item index="/user">用户信息</el-menu-item> </el-submenu>
<el-submenu index="3"> <template slot="title"> <i class="el-icon-location"></i><span>信息管理</span> </template> <el-menu-item index="/student">学生信息</el-menu-item> <el-menu-item index="/notice">系统公告</el-menu-item> <el-menu-item index="/config">配置参数</el-menu-item> </el-submenu> </el-menu> </el-aside>
<el-main> <router-view /> </el-main>
</el-container>
|
修复菜单栏右侧出现的小瑕疵:
1 2 3 4 5
| <style> .el-menu { border-right: none !important; } </style>
|
关于索引重复
每一个菜单标签的索引都是唯一的,建议最外层的写1,2,3,4。每外层里面写1-1,1-2,1-3等等。如果标签重复了,那么对一个标签内容执行的操作会对另一个菜单也执行。
几个标签的总结:
el-menu
:menu是菜单的总标签,下面的标签都是放在menu菜单中的。menu一般放在container→aside中。
el-menu-item
:item代表着一个不具有下一级跳转的导航链接,可以当做叶子节点。
el-submenu
(template
+el-menu-item
):submenu用在menu中,可以再创建一个二级菜单,submenu里面是template和item。template是用来声明二级菜单的icon和名字,然后下面可以直接接item,来创建目录。
el-menu-item-group
:用来将item进行分组的,不太常用。
2. 路由router配置
本节主要介绍:如何使用菜单的default-index和router属性来进行点击页面的跳转。
default-active 在NavMenu的Menu Attribute(菜单属性)中。default-active本意是当前激活的index。
default-active+router可以用来通过菜单进行跳转页面。
我们只需要修改el-menu菜单中的属性:
1 2
| <el-menu default-active="2" class="el-menu-vertical-demo" @open="handleOpen" @close="handleClose" background-color="#545c64" text-color="#fff" active-text-color="#ffd04b">
|
default-active改为路由对应的地址,然后声明一下表示使用router功能。
1
| <el-menu :default-active="$route.path" router class="el-menu-vertical-demo" @open="handleOpen" @close="handleClose" background-color="#545c64" text-color="#fff" active-text-color="#ffd04b">
|
下面就可以在标签中填入路由开始用了:
App.vue:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <el-menu :default-active="$route.path" router class="el-menu-vertical-demo" @open="handleOpen" @close="handleClose" background-color="#545c64" text-color="#fff" active-text-color="#ffd04b"> <el-menu-item index="/" > <i class="el-icon-s-home"></i> <span slot="title">系统首页</span> </el-menu-item>
<el-submenu index="2"> <template slot="title"> <i class="el-icon-location"></i><span>系统管理</span> </template> <el-menu-item index="/admin" >管理员信息</el-menu-item> <el-menu-item index="2-2">用户信息</el-menu-item> </el-submenu>
|
router/index.js:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| const routes = [ { path: '/', name: 'home', component: HomeView }, { path: '/about', name: 'about', component: () => import('../views/AboutView.vue') }, { path: '/admin', name: 'admin', component: () => import('../views/AdminView.vue') } ]
|
AdminView.vue:
1 2 3 4 5 6
| <template> <div class="admin"> <h1>管理员信息页面</h1> </div> </template>
|
总结:其实我们在菜单的路由其实主要是路由views页面,然后views中内含components。
router→views→components
效果:

3. 知识点记录
3.1. Ext.每个template的根div
在Vue中的语法要求每个template只能有一个根元素。这个根元素可以是任何HTML标签(常见是div),它必须是唯一的,不能有其他兄弟元素。这是为了确保Vue能正确地编译和渲染组件模板。
Vue会将组件模板编译成虚拟DOM,并在内部进行diff算法和更新操作。如果允许多个根元素,那么Vue在处理模板时就无法确定应该如何处理多个根元素的情况。
3.2. Ext.使用div-margin来调整间距
组件一般放在div里,代表一个横框。调节上下左右间距建议使用div的margin来进行设置。
3.3. 表格组件了解
文档:https://element.eleme.cn/#/zh-CN/component/table
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <div> <el-table :data="tableData" stripe style="width: 100%">
<el-table-column prop="id" label="id" width="100" align="center" /> <el-table-column prop="name" label="姓名" align="center" /> <el-table-column prop="age" label="年龄" width="120" align="center" /> <el-table-column prop="class" label="班级" align="center" /> <el-table-column prop="phone" label="手机号" align="center" /> <el-table-column label="操作" align="center"> <el-button size="mini">编辑</el-button> <el-button size="mini" type="danger" plain>删除</el-button> </el-table-column> </el-table> </div>
|
静态数据:

效果图:

3.4. 搜索框与查询按钮
按钮:https://element.eleme.cn/#/zh-CN/component/button
搜索框:https://element.eleme.cn/#/zh-CN/component/input
1 2 3 4 5 6 7 8 9 10 11
| <div style="margin-top: 5px; margin-bottom: 20px; "> <el-input v-model="input" style="width:250px;" placeholder="请输入内容" clearable></el-input>
<el-button size="medium" type="primary" style="margin-left: 10px;" icon="el-icon-search" plain>搜索</el-button> <el-button size="medium" type="success" style="margin-left: 10px;" icon="el-icon-plus" plain>增加</el-button> </div>
|
设置初始值,如果不设置的话输入框没法输入内容:

修改输入框的高度
1 2 3 4 5 6 7
| <style>
.el-input__inner { height: 37px !important; line-height: 37px !important; } </style>
|
3.5. Ext.组件全局设置
快速上手→全局配置

这会让所有的elmentui的组件都变成小号的。
那么怎么设置全局的按钮某个样式的呢?
- 在main.js中import ‘element-ui/lib/theme-chalk/index.css’;(或者我们在第一节创建了一个global.css,使用那个css也行。)
- 然后在index.css中设置样式(注意:
.
开头的表示设置的是标签的样式)1 2 3 4 5
| .el-button { height: 30px; width: 80px; }
|
3.6. 分页器
分页器:https://element.eleme.cn/#/zh-CN/component/pagination
使用element-ui实现表格分页-CSDN博客
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <div class="block" style="margin-top:15px;">
<el-pagination align='center' @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage4" :page-sizes="[100, 200, 300, 400]" :page-size="100" layout="total, sizes, prev, pager, next, jumper" :total="400"> </el-pagination> </div>
|