前端(六):Vue组件库Element

yours_Gabriel 2024-08-30 08:03:08 阅读 87

一、引入

Element:是饿了吗团队研发,一套为开发者、设计师和产品经理准备的基于vue2.0的桌面端组件库。组件:组成网页的部件,例如超链接、按钮、图片、表格、表单、分页条等。官网:https://element.eleme.cn/#/zh-CN

二、快速入门

1、安装ElementUI组件库(在当前工程目录下),在命令行执行命令:

<code>npm install element-ui@2.15.3

先在集成终端中打开,再执行指令:

在这里插入图片描述

在这里插入图片描述

检查node_modules,出现element-ui,代表安装成功。

在这里插入图片描述

2、引入ElementUI组件库(main.js中)

<code>import ElementUI from 'element-ui';

import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI);

在这里插入图片描述

3、定义组件文件,访问官网,复制组件代码,调整。

在view下定义文件:

在这里插入图片描述

在这里插入图片描述

在APP.vue中引用elementView:

在这里插入图片描述

打开浏览器可以得到刚才引用的组件:

在这里插入图片描述

三、常见组件

表格、分页、对话框、表单

详情:https://element.eleme.cn/#/zh-CN/component/table

四、实战案例——创建员工管理系统页面

总体结构:

在这里插入图片描述

(一)在yapi中创建接口并写入数据

我创建出的链接是:https://yapi.pro/mock/481308/emp/getById

<code>{ -- -->

"code": 1,

"message": "success",

"data": [

{

"id": 1,

"name": "张三",

"image": "https://img.keaitupian.cn/newupload/08/1628502171175140.jpg",

"gender": 1,

"job": "班主任",

"entrydata": "2008-05-09",

"updatatime": "2024-08-07 15:30:00"

},

{

"id": 2,

"name": "李四",

"image": "https://img.keaitupian.cn/newupload/08/1628502171175140.jpg",

"gender": 1,

"job": "任课老师",

"entrydata": "2008-05-09",

"updatatime": "2024-08-07 15:30:00"

},

{

"id": 3,

"name": "王五",

"image": "https://img.keaitupian.cn/newupload/08/1628502171175140.jpg",

"gender": 1,

"job": "任课老师",

"entrydata": "2008-05-09",

"updatatime": "2024-08-07 15:30:00"

},

{

"id": 4,

"name": "刘小梅",

"image": "https://img.keaitupian.cn/newupload/08/1628502171175140.jpg",

"gender": 2,

"job": "任课老师",

"entrydata": "2008-05-09",

"updatatime": "2024-08-07 15:30:00"

},

{

"id": 5,

"name": "刘大梅",

"image": "https://img.keaitupian.cn/newupload/08/1628502171175140.jpg",

"gender": 2,

"job": "任课老师",

"entrydata": "2008-05-09",

"updatatime": "2024-08-07 15:30:00"

},

{

"id": 6,

"name": "刘梅",

"image": "https://img.keaitupian.cn/newupload/08/1628502171175140.jpg",

"gender": 2,

"job": "任课老师",

"entrydata": "2008-05-09",

"updatatime": "2024-08-07 15:30:00"

}

]

}

在这里插入图片描述

(二)书写两个view页面

<code>其中EmpView.vue的数据是通过axio获取第①步中写的

DeptView.vue

<template>

<div>

<el-container style="height: 700px; border: 1px solid #eee">code>

<el-header style="font-size:40px; background-color: rgb(238, 241, 246)">tlias 智能学习辅助系统</el-header>code>

<el-container>

<el-aside width="230px" style="border: 1px solid #eee">code>

<el-menu :default-openeds="['1', '3']">code>

<el-submenu index="1">code>

<template slot="title"><i class="el-icon-message"></i>系统信息管理</template>code>

<el-menu-item index="1-1">code>

<router-link to="/dept">部门管理</router-link>code>

</el-menu-item>

<el-menu-item index="1-2">code>

<router-link to="/emp">员工管理</router-link>code>

</el-menu-item>

</el-submenu>

</el-menu>

</el-aside>

<el-main>

<!-- 表格 -->

<el-table :data="tableData" border>code>

<el-table-column prop="name" label="名称" width="250"></el-table-column>code>

<el-table-column prop="updatetime" label="最后操作时间" width="250"></el-table-column>code>

<el-table-column label="操作">code>

<el-button type="primary" size="mini">编辑</el-button>code>

<el-button type="danger" size="mini">删除</el-button>code>

</el-table-column>

</el-table>

</el-main>

</el-container>

</el-container>

</div>

</template>

<script>

export default { -- -->

data() {

return {

tableData: [{

id: 1,

name: "学工部",

updatetime: "2010-01-01 12:00:00"

}, {

id: 2,

name: "教研部",

updatetime: "2010-01-01 12:00:00"

}, {

id: 3,

name: "就业部",

updatetime: "2010-01-01 12:00:00"

}, {

id: 4,

name: "人事部",

updatetime: "2010-01-01 12:00:00"

}, {

id: 5,

name: "行政部",

updatetime: "2010-01-01 12:00:00"

}]

}

},

methods: {

}

}

</script>

<style></style>

EmpView.vue:

<template>

<div>

<el-container style="height: 700px; border: 1px solid #eee">code>

<el-header style="font-size: 40px; background-color: rgb(238, 241, 246)">tlias 智能学习辅助系统</el-header>code>

<el-container>

<el-aside width="230px" style=" border: 1px solid #eee">code>

<el-menu :default-openeds="['1', '3']">code>

<el-submenu index="1">code>

<template slot="title"><i class="el-icon-message"></i>系统信息管理</template>code>

<el-menu-item index="1-1">code>

<router-link to="/dept">部门管理</router-link>code>

</el-menu-item>

<el-menu-item index="1-2">code>

<router-link to="/emp">员工管理</router-link>code>

</el-menu-item>

</el-submenu>

</el-menu>

</el-aside>

<el-main>

<!-- 表单 -->

<el-form :inline="true" :model="searchForm" class="demo-form-inline">code>

<el-form-item label="姓名">code>

<el-input v-model="searchForm.name" placeholder="姓名"></el-input>code>

</el-form-item>

<el-form-item label="性别">code>

<el-select v-model="searchForm.gender" placeholder="请选择你的性别">code>

<el-option label="男" value="1"></el-option>code>

<el-option label="女" value="2"></el-option>code>

</el-select>

</el-form-item>

<el-form-item label="入职日期">code>

<el-date-picker v-model="searchForm.entrydata" type="daterange" range-separator="至"code>

start-placeholder="开始日期" end-placeholder="结束日期">code>

</el-date-picker>

</el-form-item>

<el-form-item>

<el-button type="primary" @click="onSubmit">查询</el-button>code>

</el-form-item>

</el-form>

<!-- 表格 -->

<el-table :data="tableData" border="1px">code>

<el-table-column prop="name" label="姓名" width="180"></el-table-column>code>

<el-table-column prop="img" label="图像" width="140">code>

<!-- 插槽 -->

<template slot-scope="scope">code>

<img :src="scope.row.img" width="100px" height="70px">code>

</template>

</el-table-column>

<el-table-column label="性别" width="140">code>

<!-- 插槽 -->

<template slot-scope="scope">code>

{ -- -->{ scope.row.gender == 1 ?'男':'女' }}

</template>

</el-table-column>

<el-table-column prop="job" label="职位" width="140"></el-table-column>code>

<el-table-column prop="entrydata" label="入职时间" width="180"></el-table-column>code>

<el-table-column prop="updatatime" label="最后操作时间" width="230"></el-table-column>code>

<el-table-column label="操作">code>

<el-button type="primary" size="mini">编辑</el-button>code>

<el-button type="danger" size="mini">删除</el-button>code>

</el-table-column>

</el-table>

<!-- 分页条 -->

<el-pagination background layout="total,sizes,prev, pager, next,jumper"code>

@size-change="handleSizeChange" @current-change="handleCurrentChange" :total="1000">code>

</el-pagination>

</el-main>

</el-container>

</el-container>

</div>

</template>

<script>

import axios from 'axios';

export default { -- -->

el:'#app',

data() {

return {

tableData:[],

searchForm: {

name: '',

gender: '',

entrydata:[]

}

}

},

methods: {

onSubmit() {

console.log('submit!');

},

handleSizeChange:function(val){

alert("页码大小发生变化:" + val)

},

handleCurrentChange: function (val) {

alert("页码发生变化:" + val)

}

},

mounted(){

//发送异步请求,获取数据

axios.get("https://yapi.pro/mock/481308/emp/getById").then((result) =>{

this.tableData = result.data.data;

});

}

};

</script>

(三)在Router下的index.js中书写两个页面路径,方便点击跳转

import Vue from 'vue'

import VueRouter from 'vue-router'

Vue.use(VueRouter)

const routes = [

{

path: '/emp',

name: 'emp',

component: () => import('../views/element/EmpView.vue')

},

{

path: '/dept',

name: 'dept',

// route level code-splitting

// this generates a separate chunk (about.[hash].js) for this route

// which is lazy-loaded when the route is visited.

component: () => import(/* webpackChunkName: "about" */ '../views/element/DeptView.vue')

},

{

path: '/',

redirect : '/dept',

component: () => import('../views/element/DeptView.vue')

},

]

const router = new VueRouter({

routes

})

export default router

(四)在app.vue中控制两个页面动态展示

<template>

<!-- <div id="app">code>

<nav>

<router-link to="/">Home</router-link> |code>

<router-link to="/about">About</router-link>code>

</nav>

<router-view/>

</div> -->

<div>

<!-- 静态展示 -->

<!-- <emp-view></emp-view> -->

<!-- 动态展示 -->

<router-view></router-view>

</div>

</template>

<script>

/* import EmpView from './views/element/EmpView.vue'; */

export default{

components:{ /* EmpView */},

data(){

return{

}

}

}

</script>

<style>

/* #app {

font-family: Avenir, Helvetica, Arial, sans-serif;

-webkit-font-smoothing: antialiased;

-moz-osx-font-smoothing: grayscale;

text-align: center;

color: #2c3e50;

}

nav {

padding: 30px;

}

nav a {

font-weight: bold;

color: #2c3e50;

}

nav a.router-link-exact-active {

color: #42b983;

} */

</style>

运行结果:

在这里插入图片描述

在这里插入图片描述

(五)打包

点击运行打包。打包完成后出现<code>dist目录

在这里插入图片描述

在这里插入图片描述

(六)部署

Nginx是一款轻量级的web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占用内存少,并发能力强,在各大型的公司都有非常广泛的使用。

官网:https://nginx.org/

下载后解压文件到路径没有中文的目录下。

在这里插入图片描述

在这里插入图片描述

<code>部署打包好的文件:将打包好的dist目录下的文件,复制到nginx安装目录的html目录下

在这里插入图片描述

<code>启动:双击nginx.exe启动,该服务器默认占用80端口号,但是打不开(通过查看任务管理器如果没有看到这个nginx.exe在后台运行,那么继续接下来修改端口号的操作,否则不用),通过日志文件发现端口号80被占用,在conf目录下的nginx.conf修改默认端口号,修改完成后,再双击nginx.exe启动,

在这里插入图片描述

在这里插入图片描述

访问我们的端口号(我的依旧是80没有改变),在地址栏输入<code>localhost:80,可以直接访问到我之前写的DeptView和EmpView。

完结撒花~



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。