概述
Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组
件库.
安装 ElementUI
npm 安装
推荐使用 npm 的方式安装,它能更好地和 webpack 打包工具配合使用。
npm i element-ui -S
在控制台输入此命令来安装ElementUI
在 main.js 中写入以下内容:
import
ElementUI
from
'element-ui'
;
import
'element-ui/lib/theme-chalk/index.css'
;
Vue.use(ElementUI);
new Vue({
render: h => h(App),
}).$mount('#app');
具体组件使用参考 API 文档
https://element.eleme.cn/2.11/#/zh-CN
在这个网址来用来截取自己想用的组件来开发项目
5.
路由嵌套
{
path: '/main',
component: Main, //
路由嵌套 在
main
下面的嵌套子路由
children:[
{
path:"/admin",
component:Admin
}
]
}
源代码
/* main.js */
import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false
/* 导入路由 */
import router from './router/index.js'
Vue.use(router);
/* 导入elementui */
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);
new Vue({
render: h => h(App),
router
}).$mount('#app')
<!-- App.vue -->
<template>
<div id="app">
<!-- 显示一级组件不显示子级组件
-->
<router-view></router-view>
</div>
</template>
<script>
export default {
name: 'app',
}
</script>
<style>
<!-- Login.vue -->
<!-- 一个.vue文件是一个组件,可以理解为一个页面,但是和页面不同
内容都写在一个template标签中,
template标签必须有一个根标签
-->
<template>
<div class="login_container">
<!-- 登录盒子-->
<div class="login_box">
<!-- 头像盒子-->
<div class="img_box">
<img src="./assets/logo.png" />
</div>
<!-- 登录表单-->
<div style="margin-top: 100px;padding-right:20px;">
<el-form ref="form" label-width="80px">
<el-form-item label="账号">
<el-input v-model="account"></el-input>
</el-form-item>
<el-form-item label="密码">
<el-input v-model="password"show-password></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="login()">登录</el-button>
<el-button>注册</el-button>
</el-form-item>
</el-form>
</div>
</div>
</div>
</template>
<script>
/* 导出组件,并为组件定义数据,函数,生命周期函数 */
export default{
data(){
return{
account:"",
password:""
}
},
methods:{
login(){
//前端验证账号和密码不能为空
if(this.account.length==0){
this.$message({message:"账号不能为空",type:'warning'});
return;
}
if(this.password.length==0){
this.$message({message:"密码不能为空",type:'warning'});
return;
}
//与后端交互
//后端响应一个结果
this.$router.push('/main');
}
}
}
</script>
<style>
.login_container{
height: 100vh;
margin: 0px;
padding: 0px;
background-image: url(assets/bg.jpg);
}
/* background-repeat: no-repeat;
background-size: cover;*/
.login_box{
width: 450px;
height: 350px;
background-color: #fff;
border-radius: 10px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
opacity: 0.95;
}
.img_box{
width: 130px;
height: 130px;
position: absolute;
left: 50%;
transform: translate(-50%,-50%);
background-color: #fff;
border-radius: 50%;
padding: 5px;
border: 1px solid #eee;
}
.img_box img{
width: 100%;
height: 100%;
border-radius: 50%;
background-color: #eee;
}
</style>
<!-- Main.vue -->
<template>
<div>
<el-container>
<el-header style="text-align: right; font-size: 12px">
<div class="header-title">后台管理系统</div>
<el-dropdown>
<i class="el-icon-setting" style="margin-right: 15px"></i>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>修改密码</el-dropdown-item>
<el-dropdown-item><span @click="logout()">安全退出</span></el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<span>王小虎</span>
</el-header>
<el-container>
<el-aside width="200px" style="background-color: rgb(238, 241, 246)">
<el-menu :default-openeds="['1', '3']" router> <!-- 给这个菜单加路由器可以切换组件 (切换网页(零件))-->
<el-submenu index="1">
<template slot="title"><i class="el-icon-message"></i>操作菜单</template>
<el-menu-item-group>
<el-menu-item index="/majorlist">专业管理</el-menu-item>
<el-menu-item index="/studentlist">学生管理</el-menu-item>
</el-menu-item-group>
</el-submenu>
</el-menu>
</el-aside>
<!-- 工作区间 -->
<el-main>
<!-- 显示子路由 (子组件) -->
<router-view></router-view>
</el-main>
</el-container>
</el-container>
</div>
</template>
<script>
export default{
data(){
return {
}
},
methods:{
logout(){
this.$confirm('您确定要退出吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$router.push("/login");
})
}
}
}
</script>
<style>
.el-header {
background-color: #00a7fa;
color: #333;
line-height: 60px;
}
.header-title{
width: 300px;
float: left;
text-align: left;
font-size: 20px;
color: white;
}
.el-main{
background-color: aliceblue;
height: 100vh;
}
</style>
<!-- MajorList.vue -->
<template>
<div>
专业管理
</div>
</template>
<script>
export default{
data(){
return {
}
},
methods:{
}
}
</script>
<style>
</style>
<!-- StudentList.vue -->
<template>
<div>
学生管理
</div>
</template>
<script>
export default{
data(){
return {
}
},
methods:{
}
}
</script>
<style>
</style>
/* index.js */
import Vue from 'vue';
import router from 'vue-router'; /* 导入路由 */
/* 导入组件 */
import Login from "../Login.vue";
import Main from "../Main.vue";
import MajorList from "../views/major/MajorList.vue";
import StudentList from "../views/student/StudentList.vue";
/* 注册 定义组件访问地址 */
Vue.use(router)
/* 定义组件路由 */
var rout = new router({
routes: [
{
path:"/",
component:Login
},
{
path: '/login',
component: Login
},
{
path: '/main',
component: Main,
children:[
{
path: '/majorlist',
component: MajorList
},
{
path: '/studentlist',
component: StudentList
}
]
}
]
});
//导出路由对象
export default rout;
看一下效果