一、介绍

ElementUI是一个基于Vue的UI框架。(bootstrap是基于jQuery的UI框架)

二、安装

1、下载依赖:

npm i element-ui -S

2、在main.js中引入element-ui:

import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import App from './App.vue';

Vue.config.productionTip = false
Vue.use(ElementUI);

new Vue({
  el: '#app',
  render: h => h(App),
}).$mount('#app')

三、使用ElementUI组件(参考文档,不做介绍)

1、按钮

<template>
    <div id="app">
        <h1>hello elementUI</h1>
        <el-button type="primary">主要按钮</el-button>
    </div>
</template>

 

2、表单

3、表格

四、学生信息管理系统

查询、添加、删除。

1、后台使用Koa实现数据接口;

2、添加功能使用对话框(Dialog)弹出表单;

3、删除需要有确认提示(MessageBox)。

1、后台数据(example02项目)

(1)下载并引入模块:

const Koa = require("koa");
//post请求模块
const parser = require("koa-parser");
//设置路由
const router = require("koa-router")();
///允许跨域
const cors = require('koa2-cors');
//静态目录
const static = require("koa-static");

const app = new Koa();

app.use(cors());
app.use(parser());
app.use(static(__dirname + "/public"))
app.use(router.routes());

(2)serve.js:

const Koa = require("koa");
//post请求模块
const parser = require("koa-parser");
//设置路由
const router = require("koa-router")();
///允许跨域
const cors = require('koa2-cors');
//静态目录
const static = require("koa-static");

const app = new Koa();

app.use(cors());
app.use(parser());
app.use(static(__dirname + "/public"))
app.use(router.routes());

//模拟数据库
const studentList = [{
        id: 1,
        name: "小明",
        age: 2
    },
    {
        id: 2,
        name: "小红",
        age: 4
    },
    {
        id: 3,
        name: "小亮",
        age: 6
    },
]

//get方法:获取学生列表
router.get("/student", async ctx => {
    ctx.body = studentList;
})

//post方法:添加学生
router.post("/student", async ctx => {
    let student = ctx.request.body.student;
    fruitList.push(student);
    ctx.body = true;
})

//delete方法:删除学生
router.delete("/student/:id", async ctx => {
    let id = ctx.params.id;
    studentList.map((item, index) => {
        if (item.id == id) {
            studentList.splice(index, 1);
        }
    })
    ctx.body = true;
})

app.listen(3000, () => {
    console.log("server is running")
})

2、前端项目(example01)

(1)App.vue:

<template>
    <div id="app">
        <el-button type="text" @click="dialogVisible = true">添加学生</el-button>
        <el-table :data="studentList" border style="width: 100%">
            <el-table-column prop="id" label="ID" width="150">
            </el-table-column>
            <el-table-column prop="name" label="姓名" width="120">
            </el-table-column>
            <el-table-column prop="age" label="年龄" width="120">
            </el-table-column>
            <el-table-column label="操作" width="100">
                <template slot-scope="scope">
                    <!-- scrop.row:是当前行的对象 -->
                    <el-button @click="handleClick(scope.row)" type="text" size="small">删除</el-button>
                </template>
            </el-table-column>

        </el-table>
        <el-dialog title="添加学生信息" :visible.sync="dialogVisible" width="30%">
            <el-form>
                <el-form-item label="id">
                    <el-input v-model="form.id"></el-input>
                </el-form-item>
                <el-form-item label="姓名">
                    <el-input v-model="form.name"></el-input>
                </el-form-item>
                <el-form-item label="年龄">
                    <el-input v-model="form.age"></el-input>
                </el-form-item>
            </el-form>
            <span slot="footer" class="dialog-footer">
                <el-button @click="dialogVisible = false">取 消</el-button>
                <el-button type="primary" @click="onSubmit">确 定</el-button>
            </span>
        </el-dialog>
    </div>

</template>

<script>
import axios from "axios";
export default {
    methods: {
        handleClick(row) {
            this.$confirm("此操作将永久删除该文件, 是否继续?", "提示", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning",
            })
                .then(() => {
                    axios
                        .delete(`http://127.0.0.1:3000/student/${row.id}`)
                        .then(() => {
                            this.$message({
                                type: "success",
                                message: "删除成功!",
                            });
                            this.getStudentList();
                        });
                })
                .catch(() => {
                    this.$message({
                        type: "info",
                        message: "已取消删除",
                    });
                });
        },
        getStudentList() {
            axios.get("http://127.0.0.1:3000/student").then((res) => {
                this.studentList = res.data;
            });
        },
        onSubmit() {
            axios
                .post("http://127.0.0.1:3000/student", {
                    student: this.form,
                })
                .then(() => {
                    this.getStudentList();
                    //添加后,关闭添加框
                    this.dialogVisible = false;
                });
        },
    },

    data() {
        return {
            studentList: [],
            dialogVisible: false,
            form: {
                id: "",
                name: "",
                age: "",
            },
        };
    },
    created() {
        this.getStudentList();
    },
};
</script>

3、效果:

Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐