A064_单页面组件_ElementUI_Mock_axios


ElementUI综合练习-day01

一、内容介绍

1. 搭建前端环境; (掌握)
2. 前端UI框架ElementUI简单入门 (掌握)
4. Mock.js(了解)
5. EasyMock后端模拟数据
6. Axios
7. ElementUI综合案例(CRUD)

二、搭建前端项目

1、Idea创建一个static web项目

在这里插入图片描述

2、根目录下执行vue命令
1. npm install -y
2. npm install vue
3. vue init webpack

在这里插入图片描述

3、运行项目
1.npm run dev

在这里插入图片描述

4、浏览器访问

在这里插入图片描述

5、单页面组件 . vue
5.1、定义
   创建一个.vue,里面由三个部分组成
      1 <template> 模板 html 定义结构
          只能有一个元素节点儿子(子标签)
      2 <script> js   动态行为 事件所对应函数
         export default {
               data(){ //定义数据模型
                 Return {}
}

在这里插入图片描述
3 <style scoped> 样式 美化显示

5.2、使用

在这里插入图片描述
注意:插件安装
在这里插入图片描述

三、ElementUI-基于vue前端ui框架

饿了么-PC端
http://element-cn.eleme.io/#/zh-CN
Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库,提供了很多的ui组件。我们可以使用这些组件快速开发前端项目。
资料下载网站:https://unpkg.com/element-ui@2.4.6/lib/

1、入门
1.1、安装
npm i element-ui -S
注意:也可以下载下来导入也ok,和以前的js一样使用就ok
1.2、导入

在main.js中写入一下内容:

import Vue from 'vue';
import ElementUI from 'element-ui'; //引入核心js组件
import 'element-ui/lib/theme-chalk/index.css';//引入依赖的样式
Vue.use(ElementUI)

以上代码便完成了 Element 的引入。需要注意的是,样式文件需要单独引入。

1.3、开始使用

_01_helloElementUI.vue

Elementui官网组件里面 拷贝dialog  app里面有居中功能

router.js

import HelloWorld from "./components/HelloWorld"
import HelloElementUI from "./components/_01_helloElementUI"

let routes =  [
    //以后再添加组件,只需要在路由数组中添加一个元素即可
    {
        path:"/",
        component:HelloWorld
    },
    {
        path:"/_01_helloElementUI",
        component:HelloElementUI
    }
];
export default routes;


01_helloElement.vue
<template>
  <div>
    <el-button>默认按钮</el-button>
    <el-button type="primary">主要按钮</el-button>
    <el-button type="success">成功按钮</el-button>
    <el-button type="info">信息按钮</el-button>
    <el-button type="warning">警告按钮</el-button>
    <el-button type="danger">危险按钮</el-button>
  </div>

</template>

在这里插入图片描述

2、Layout布局

通过基础的 24 分栏,迅速简便地创建布局。
通过 row 和 col 组件,并通过 col 组件的 span 属性我们就可以自由地组合布局。

<template>
    <div>
        <!--
        el-row:一行,:gutter每栏直接的间隔,默认0
            el-col:列
            :span:占比栏数,基础的 24 分栏
          -->
        <el-row :gutter="20">
            <el-col :span="6">
                <div class="grid-content bg-purple"></div>
            </el-col> <el-col :span="6">
            <div class="grid-content bg-purple"></div>
        </el-col> <el-col :span="6">
            <div class="grid-content bg-purple"></div>
        </el-col> <el-col :span="6">
            <div class="grid-content bg-purple"></div>
        </el-col>
        </el-row>
        <el-row :gutter="20">
            <el-col :span="4"><div class="grid-content bg-purple"></div></el-col>
            <el-col :span="16"><div class="grid-content bg-purple"></div></el-col>
            <el-col :span="4"><div class="grid-content bg-purple"></div></el-col>
        </el-row>
    </div>
</template>

<script>
    export default {
        name: "_02_layout"
    }
</script>

<style scoped>
    .el-row {
        margin-bottom: 20px;
    }
    .el-col {
        border-radius: 4px;
    }

    .bg-purple-dark {
        background: #99a9bf;
    }

    .bg-purple {
        background: #d3dce6;
    }

    .bg-purple-light {
        background: #e5e9f2;
    }

    .grid-content {
        border-radius: 4px;
        min-height: 36px;
    }

    .row-bg {
        padding: 10px 0;
        background-color: #f9fafc;
    }

</style>
3、Container布局容器(掌握)
用于布局的容器组件,方便快速搭建页面的基本结构:
<el-container>:外层容器。当子元素中包含 <el-header> 或 <el-footer> 时,全部子元素会垂直上下排列,否则会水平左右排列。
<el-header>:顶栏容器。
<el-aside>:侧边栏容器。
<el-main>:主要区域容器。
<el-footer>:底栏容器。
<template>
    <el-container>
        <el-header>Header</el-header>
        <el-container>
            <el-aside width="200px">Aside</el-aside>
            <el-main>Main</el-main>
        </el-container>
    </el-container>
</template>

<script>
    export default {
        name: "_03_container"
    }
</script>

<style scoped>
    .el-header, .el-footer {
        background-color: #B3C0D1;
        color: #333;
        text-align: center;
        line-height: 60px;
    }

    .el-aside {
        background-color: #D3DCE6;
        color: #333;
        text-align: center;
        line-height: 200px;
    }

    .el-main {
        background-color: #E9EEF3;
        color: #333;
        text-align: center;
        line-height: 160px;
    }

    body > .el-container {
        margin-bottom: 40px;
    }

</style>

如果container没有全屏,可以在index.html中调整如下样式:

<style type="text/css">
  html,body,#app,.el-container{
	 /*设置内部填充为0,几个布局元素之间没有间距*/
	 padding: 0px;
	 /*外部间距也是如此设置*/
	 margin: 0px;
	 /*统一设置高度为100%*/
	 height: 100%;
   }
</style>

最终效果如图:
在这里插入图片描述

4、Button按钮(掌握)
<template>
    <div>
        <!--
          按钮:
           el-button;
           disabled:禁用
           type:按钮类型;text:文字按钮,没有边框样式;
           icon="el-icon-search":按钮图标
           size="medium":按钮大小:三个值:medium、small、mini
           round:圆脚
          -->
        <el-row>
            <el-button>默认按钮</el-button>
            <el-button type="text">文字按钮</el-button>
            <el-button type="primary" disabled>主要按钮</el-button>
            <el-button type="success" size="medium">成功按钮</el-button>
            <el-button type="info" round>信息按钮</el-button>
            <el-button type="warning" icon="el-icon-delete">警告按钮</el-button>
            <el-button type="danger">危险按钮</el-button>
            <el-button type="primary" icon="el-icon-search">搜索</el-button>
        </el-row>
    </div>

</template>

<script>
    export default {
        name: "_04_button"
    }
</script>

<style scoped>

</style>
5、Tree树形控件(掌握)
6、Pagination分页(掌握-结合表格)
7、Alert警告(掌握)
8、Tabs标签页
9、Dialog对话框(掌握)
10、Form(掌握)
11、Table(掌握)

四、Elementui+Crud实现

在这里插入图片描述

1、接口数据模拟-Mockjs
1.1、为什么需要模拟数据

在前后端分离开发模式中,前后端是分离并行开发的,前端开发人员在开发的时候后台提供接口数据的接口还没有写好,所以需要模拟数据。

1.2、Mock.js模拟数据(后台人员不需要掌握-了解)
1.2.1、什么是mock.js

Mock.js (官网http://mockjs.com/)是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试。提供了以下模拟功能:

  • 根据数据模板生成模拟数据
  • 模拟 Ajax 请求,生成并返回模拟数据
  • 基于 HTML 模板生成模拟数据
1.2.2、特点

前后端分离
让前端攻城师独立于后端进行开发。
增加单元测试的真实性
通过随机数据,模拟各种场景。
开发无侵入
不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据。
用法简单
符合直觉的接口。
数据类型丰富
支持生成随机的文本、数字、布尔值、日期、邮箱、链接、图片、颜色等。
方便扩展
支持支持扩展更多数据类型,支持自定义函数和正则。

1.2.3、快速入门

需求:生成列表数据,数据条数为5条。
(1)新建demo1.js
(2)下载安装mock.js
   npm install mockjs
(3)在demo1.js文件加入代码

let Mock=require('mockjs') 
let data=Mock.mock({ 
// name|规则:值
'list|5':[ 
{ 
'id':1, 
'name':'测试' 
} 
] 
}) 
console.log(JSON.stringify(data)) 

(4)执行命令 node demo1.js

我们在本例中产生了5条相同的数据,这些数据都是相同的,如果我们需要让这些数据是
按照一定规律随机生成的,需要按照Mock.js的语法规范来定义。
Mock.js 的语法规范包括两部分:
1.数据模板定义规范(Data Template Definition,DTD)
2.数据占位符定义规范(Data Placeholder Definition,DPD)

1.2.4、crud数据模拟

新创建一个文件 UserMock.js 用来模拟数据
在这里插入图片描述
https://www.jianshu.com/p/7674c285a0d8

(1)userMock.js里面模拟数据

import Mock from 'mockjs' // 引入mock
var dataList = []
for (var i = 0; i < 15; i++) {
  dataList.push(Mock.mock({
    'id': '@increment',
    'name': '@cname',
    'phone': /^1[0-9]{10}$/,
    'email': '@email',
    'address': '@county(true)',
    'createTime': '@date("yyyy-MM-dd")'
  }))
}

//开始的位置 size 每页显示的条数 list 总结数据
function pagination(index, size, list) {
  console.log(list);
  console.log(index, size);
  // index = 2 size 10   list.slice(10,20)
  return list.slice((index-1)*size, index*size)
}
// 获取用户列表  
Mock.mock(new RegExp('/user/list'), 'post', (opts) => {
  var list =dataList;
  console.log(opts.body)
  var index = JSON.parse(opts.body).page;
  var size = 10;
  var total = list.length
  list = pagination(index, size, list)
  return {
    'total': total,
    'data': list
  }
})

(2)需要使用axios来发送请求 获取模拟数据

2、Ajax请求优化-axios

vue更新到2.0之后,官方推荐使用axios请求服务器数据。Axios和其他的ajax库都很类似,他是基于promise的http库,可以用在浏览器和node.js中
理解 就是ajax请求 --在vue里面axios

2.1、安装
npm install axios --save
2.2、局部使用

在这里插入图片描述

2.3、全局使用

main.js:

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

//配置axios的全局基本路径 t
axios.defaults.baseURL='http://localhost:80'
//全局属性配置,在任意组件内可以使用this.$http获取axios对象
Vue.prototype.$http = axios

Vue.config.productionTip = false
Vue.use(ElementUI);
Vue.use(VueRouter)
const router = new VueRouter({
    routes
})

具体文件使用
在这里插入图片描述

测试数据:
在这里插入图片描述

2.4、EasyMock or fastmock
2.4.1、什么是EasyMock

Easy Mock 是杭州大搜车无线团队出品的一个极其简单、高效、可视化、并且能快
速生成模拟数据的在线 mock 服务 。以项目管理的方式组织 Mock List,能帮助我们更好的管理 Mock 数据。
地址:https://www.easy-mock.com
在线文档:https://www.easy-mock.com/docs、

本身是一个开源项目,自己团队可以部署,但是官方也给我部署一套,我们直接使用他们就ok。

2.4.2、EasyMock基本入门

2.3.2.1 初始设置
(1)登录或注册。
浏览器打开 输出用户名和密码,如果不存在会自动注册。
注意:请牢记密码,系统没有找回密码功能! –
用户名/密码 zytest123/zytest123
在这里插入图片描述

登录后进入主界面
在这里插入图片描述

(2)创建项目:点击右下角的加号
在这里插入图片描述

填写项目名称,点击创建按钮
在这里插入图片描述
创建完成后可以在列表中看到刚刚创建的项目

2.3.2.2 接口操作
(1)创建接口。点击列表中的项目
在这里插入图片描述

进入项目工作台页面
在这里插入图片描述

(2)点击“创建接口” ,左侧区域输出mock数据,右侧定义Method 、 Url 、描述等信息
在这里插入图片描述

{
  "total": 100,
  "rows|10": [{
    'id': '@increment',
    'name': '@cname',
    'phone': /^1[0-9]{10}$/,
    'email': '@email',
    'address': '@county(true)',
    'createTime': '@date("yyyy-MM-dd")'
  }]

}

保存之后 出现下图:
在这里插入图片描述

访问路径:BaseURL+URL
https://www.easy-mock.com/mock/5d5ab59158062d52256f38a6/test/user/list

程序调整:
(1)在main.js里面 注释掉mockjs的引入

//import UserMock from '../mock/userMock';

(2)在对应table.vue页面上面 修改url访问地址

getUsers(){
  let para = {
    page: this.page,
    keyword: this.filters.keyword
  };
  let url = "https://www.easy-mock.com/mock/5d5ab59158062d52256f38a6/test/user/list";
  this.$http.get(url,para)
  // axios.post("/user/list",para)
    .then((res=>{
      this.total = res.data.total;
      this.users = res.data.rows;
    }))
}
2.4.3、本地安装

其实我们可以不使用官方提供的在线,可以自己搭建,因为EasyMock提供软件安装包,支持安装。但是我们现在就是别人装好了的,暂时不安装了。

五、课程总结

1、重点
2、难点
3、如何掌握?
4、扩展

Restful是http协议的扩展使用,以前我们用http只用了get和post请求,其实put,delete请求,Restful以资源为核心,针对资源要做crud. 定位资源(url),做什么操作(通过http不同请求区分), Put表示添加,Post表示修改,Get查询,Delete删除

Put http://127.0.0.1/user
{
   id:1,
   “name”:”zs”
}
Delete http://127.0.0.1/user/1
Post http://127.0.0.1/user/1
{
   “name”:”ls”
}
Get http://127.0.0.1/user/1
Get http://127.0.0.1/users

六、排错技巧(技巧)

七、课后练习

八、面试题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值