Home  >  Article  >  Web Front-end  >  How to build element-ui (detailed tutorial)

How to build element-ui (detailed tutorial)

亚连
亚连Original
2018-06-05 09:40:4621285browse

Below I will share with you an example of Vue front-end engineering operation for building element-ui. It has a good reference value and I hope it will be helpful to everyone.

1. Install npm image

#(1) Download node.js and configure the environment variables of node.js

Check whether the PATH environment variable is configured with Node.js, click Start=》Run=》Enter "cmd" => Enter the command "path"

Check the Node.js version

Enter in the command window: npm install -g cnpm –registry=https://registry.npm.taobao.org

2. Install global vue-cli

(1) npm install -g vue-cli and press Enter to verify whether the installation is successful. On the command line Enter vue, and the vue information comes out indicating that the installation is successful

3. Global installation of vue-cli

(1) npm install --global vue-cli

4. Create a new project based on the webpack template

(1) vue init webpack my-project (project name)
(2)cd my-project
(3)npm install
(4)npm run dev

5. Environment to be installed

(1) npm install sass-loader --save-dev
(2) npm install gulp-sass
(3) npm install -- save axios
(4) npm install element-ui -S
(5) npm install vuex --save

6. Packages that need to be introduced (element-ui)

(1) import ElementUI from 'element-ui'
(2) import 'element-ui/lib/theme-default/index.css'
(3 ) import Vue from 'vue'
(4) Use: Vue.use(ElementUI)

7. Project code structure

Project source code: https://github.com/davis0511/school-ui

(1)

(2) Home.vue

<template>
	<el-row class="container">
		<el-col :span="24" class="header">
		 <el-col :span="20" class="logo">
		  <img src="./assets/logo4.png" /> <span>学校管理<i class="txt">系统</i></span>
		 </el-col>
		 <el-col :span="4" class="userinfo">
				<el-dropdown trigger="click">
					<span class="el-dropdown-link userinfo-inner"><img :src="this.sysUserAvatar" /> {{sysUserName}}</span>
						<el-dropdown-menu slot="dropdown">
						<el-dropdown-item>我的消息</el-dropdown-item>
						<el-dropdown-item>设置</el-dropdown-item>
						<el-dropdown-item pided @click.native="logout">退出登录</el-dropdown-item>
					</el-dropdown-menu>
				</el-dropdown>
		  </el-col>
		</el-col>
		<el-col :span="24" class="main">
			<aside>
			<el-menu :default-active="$route.path" class="el-menu-vertical-demo" @open="handleopen" @close="handleclose" @select="handleselect"
			theme="dark" unique-opened router>
				<template v-for="(item,index) in $router.options.routes" v-if="!item.hidden">
					<el-submenu :index="index+&#39;&#39;" v-if="!item.leaf">
						<template slot="title"><i :class="item.iconCls"></i>{{item.name}}</template>
						<el-menu-item v-for="child in item.children" :index="child.path" v-if="!child.hidden">{{child.name}}</el-menu-item>
					</el-submenu>
					<el-menu-item v-if="item.leaf&&item.children.length>0" :index="item.children[0].path"><i :class="item.iconCls"></i>{{item.children[0].name}}</el-menu-item>
				</template>
			</el-menu>
			</aside>
			<section class="content-container">
				 <p class="grid-content bg-purple-light">
					<el-col :span="24" class="breadcrumb-container">
						<strong class="title">{{$route.name}}</strong>
						<el-breadcrumb separator="/" class="breadcrumb-inner">
							<el-breadcrumb-item v-for="item in $route.matched">
								 {{ item.name }}
							</el-breadcrumb-item>
						</el-breadcrumb>
					</el-col>
					<el-col :span="24" class="content-wrapper">
						<transition>
						<router-view></router-view>
						</transition>
					</el-col>
				</p>
			</section>
		</el-col>
	</el-row>
</template>
<script>
 export default{
		data() {
			return { 
				sysUserName:&#39;&#39;
			}
	 },
		methods:{
				onSubmit() {
				console.log(&#39;submit!&#39;);
				},
				handleopen() {
				//console.log(&#39;handleopen&#39;);
				},
				handleclose() {
				//console.log(&#39;handleclose&#39;);
				},
				handleselect: function (a, b) {
				},
				//退出登录
				logout: function () {
					var _this = this;
					this.$confirm(&#39;确认退出吗?&#39;, &#39;提示&#39;, {
					//type: &#39;warning&#39;
					}).then(() => {
					sessionStorage.removeItem(&#39;user&#39;);
					_this.$router.push(&#39;/login&#39;);
					}).catch(() => {
      
				}); 
			}
		}
 }
</script> 
<style scoped lang="scss">
.container {
	position: absolute;
	top: 0px;
	bottom: 0px;
	width: 100%;
	.header {
		height: 60px;
		line-height: 60px;
		background: #1F2D3D;
		color: #c0ccda;
		.userinfo {
				text-align: right;
				padding-right: 35px;
				.userinfo-inner {
				color: #c0ccda;
				cursor: pointer;
				img {
				width: 40px;
				height: 40px;
				border-radius: 20px;
				margin: 10px 0px 10px 10px;
				float: right;
				}
			}
		}
		.logo {
			font-size: 22px;
			img {
			width: 40px;
			float: left;
			margin: 10px 10px 10px 18px;
			}
			.txt {
			color: #20a0ff
			}
		}
	}
	.main {
		background: #324057;
		position: absolute;
		top: 60px;
		bottom: 0px;
		overflow: hidden;
		aside {
		width: 230px;
		}
	.content-container {
		background: #f1f2f7;
		position: absolute;
		right: 0px;
		top: 0px;
		bottom: 0px;
		left: 230px;
		overflow-y: scroll;
		padding: 20px;
		.breadcrumb-container {
			margin-bottom: 15px;
			.title {
				width: 200px;
				float: left;
				color: #475669;
			}
			.breadcrumb-inner {
				float: right;
			}
  }
	 .content-wrapper {
			background-color: #fff;
			box-sizing: border-box;
	 }
  }
 }
}
</style>

(3)App.vue

##(4)main.js

import Vue from &#39;vue&#39;
import Router from &#39;vue-router&#39; 
import App from &#39;./App&#39;
import routes from &#39;./router&#39;
import ElementUI from &#39;element-ui&#39;
import &#39;element-ui/lib/theme-default/index.css&#39;
Vue.use(Router) 
Vue.use(ElementUI)
const router = new Router({
 routes
});
Vue.config.productionTip = false
new Vue({ 
 router, 
 render: h => h(App)
}).$mount(&#39;#app&#39;)

(5)router.js

import Home from &#39;./Home&#39; 
import classes from &#39;./class/classes&#39; 
import student from &#39;./student/student&#39; 
let router = [
 {
  path: &#39;/&#39;,
  name: &#39;学校&#39;,
  component: Home,
  redirect: &#39;/classes&#39;,
 iconCls: &#39;fa fa-id-card-o&#39;,
 children: [
{ path: &#39;/classes&#39;, component: classes, name: &#39;班级管理&#39; },
{ path: &#39;/student&#39;, component: student, name: &#39;学生管理&#39; }
  ] 
 }
]; 
export default router;

##8. After completion, npm run dev; The interface rendering is as follows:

The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.

Related articles:

How to use puppeteer to crack the sliding verification code of JiExperience


How to use elementUI to implement in Vue Custom theme method


#Bind events to dynamically generated tags in jquery (detailed tutorial)


The above is the detailed content of How to build element-ui (detailed tutorial). For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn