前端(六):Vue组件库Element

6 篇文章 0 订阅

一、引入

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

二、快速入门

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

npm install element-ui@2.15.3

先在集成终端中打开,再执行指令:
在这里插入图片描述
在这里插入图片描述
检查node_modules,出现element-ui,代表安装成功。
在这里插入图片描述

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

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": 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页面

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

<template>
    <div>
        <el-container style="height: 700px; border: 1px solid #eee">
            <el-header style="font-size:40px; background-color: rgb(238, 241, 246)">tlias 智能学习辅助系统</el-header>
            <el-container>
                <el-aside width="230px" style="border: 1px solid #eee">
                    <el-menu :default-openeds="['1', '3']">
                        <el-submenu index="1">
                            <template slot="title"><i class="el-icon-message"></i>系统信息管理</template>
                            <el-menu-item index="1-1">
                                <router-link to="/dept">部门管理</router-link>
                            </el-menu-item>
                            <el-menu-item index="1-2">
                                <router-link to="/emp">员工管理</router-link>
                            </el-menu-item>
                        </el-submenu>
                    </el-menu>
                </el-aside>


                <el-main>
                    <!-- 表格 -->
                    <el-table :data="tableData" border>
                        <el-table-column prop="name" label="名称" width="250"></el-table-column>
                        <el-table-column prop="updatetime" label="最后操作时间" width="250"></el-table-column>
                        <el-table-column label="操作">
                            <el-button type="primary" size="mini">编辑</el-button>
                            <el-button type="danger" size="mini">删除</el-button>
                        </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">
            <el-header style="font-size: 40px; background-color: rgb(238, 241, 246)">tlias 智能学习辅助系统</el-header>
            <el-container>
                <el-aside width="230px" style=" border: 1px solid #eee">
                    <el-menu :default-openeds="['1', '3']">
                        <el-submenu index="1">
                            <template slot="title"><i class="el-icon-message"></i>系统信息管理</template>

                            <el-menu-item index="1-1">
                                <router-link to="/dept">部门管理</router-link>
                            </el-menu-item>
                            <el-menu-item index="1-2">
                                <router-link to="/emp">员工管理</router-link>
                            </el-menu-item>

                        </el-submenu>
                    </el-menu>
                </el-aside>

                <el-main>
                    <!-- 表单 -->
                    <el-form :inline="true" :model="searchForm" class="demo-form-inline">
                        <el-form-item label="姓名">
                            <el-input v-model="searchForm.name" placeholder="姓名"></el-input>
                        </el-form-item>
                        <el-form-item label="性别">
                            <el-select v-model="searchForm.gender" placeholder="请选择你的性别">
                                <el-option label="男" value="1"></el-option>
                                <el-option label="女" value="2"></el-option>
                            </el-select>
                        </el-form-item>
                        <el-form-item label="入职日期">
                            <el-date-picker v-model="searchForm.entrydata" type="daterange" range-separator="至"
                                start-placeholder="开始日期" end-placeholder="结束日期">
                            </el-date-picker>
                        </el-form-item>
                        <el-form-item>
                            <el-button type="primary" @click="onSubmit">查询</el-button>
                        </el-form-item>
                    </el-form>


                    <!-- 表格 -->
                    <el-table :data="tableData" border="1px">
                        <el-table-column prop="name" label="姓名" width="180"></el-table-column>
                        <el-table-column prop="img" label="图像" width="140">
                            <!-- 插槽 -->
                            <template slot-scope="scope">
                                <img :src="scope.row.img" width="100px" height="70px">
                            </template>
                        </el-table-column>
                        <el-table-column label="性别" width="140">
                            <!-- 插槽 -->
                            <template slot-scope="scope">
                                {{ scope.row.gender == 1 ?'男':'女' }}
                            </template>
                        </el-table-column>
                        <el-table-column prop="job" label="职位" width="140"></el-table-column>
                        <el-table-column prop="entrydata" label="入职时间" width="180"></el-table-column>
                        <el-table-column prop="updatatime" label="最后操作时间" width="230"></el-table-column>
                        <el-table-column label="操作">
                            <el-button type="primary" size="mini">编辑</el-button>
                            <el-button type="danger" size="mini">删除</el-button>
                        </el-table-column>
                    </el-table>

                    <!-- 分页条 -->
                    <el-pagination background layout="total,sizes,prev, pager, next,jumper"
                        @size-change="handleSizeChange" @current-change="handleCurrentChange" :total="1000">

                    </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">
    <nav>
      <router-link to="/">Home</router-link> |
      <router-link to="/about">About</router-link>
    </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>

运行结果:
在这里插入图片描述

在这里插入图片描述

(五)打包

点击运行打包。打包完成后出现dist目录
在这里插入图片描述
在这里插入图片描述

(六)部署

Nginx是一款轻量级的web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占用内存少,并发能力强,在各大型的公司都有非常广泛的使用。
官网:https://nginx.org/
下载后解压文件到路径没有中文的目录下。
在这里插入图片描述
在这里插入图片描述
部署打包好的文件:将打包好的dist目录下的文件,复制到nginx安装目录的html目录下
在这里插入图片描述
启动:双击nginx.exe启动,该服务器默认占用80端口号,但是打不开(通过查看任务管理器如果没有看到这个nginx.exe在后台运行,那么继续接下来修改端口号的操作,否则不用),通过日志文件发现端口号80被占用,在conf目录下的nginx.conf修改默认端口号,修改完成后,再双击nginx.exe启动,
在这里插入图片描述
在这里插入图片描述
访问我们的端口号(我的依旧是80没有改变),在地址栏输入localhost:80,可以直接访问到我之前写的DeptView和EmpView。

完结撒花~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值