1. 简介:VUE核心思想是组件和数据驱动,是每一个组件都需要自己编写模板样式添加事件,数据等是非常麻烦的,所以“饿了么”推出了基于VUE2.0的组件库,它的名称叫做element-ui,提供了丰富的PC端组件。element-ui是一个ui库,它不依赖于vue,但是却是当前和vue配合做项目开发的一个比较好的ui框架。
2. 使用方法
(1)安装:npm install element-ui
(2)在main.js文件中进行全局的配置
import ElementUI from 'element-ui'//导入element-ui
import 'element-ui/lib/theme-chalk/index.css'//导入element-ui的样式文件
Vue.use(ElementUI)
3. UI组件的使用:所有的DOM元素都带有前缀 el-
按钮:< el-button >
//1.1 按钮的类型
普通按钮
Primary按钮
Info按钮
Success
Warning
Danger
//1.2 带边框的按钮(鼠标悬浮效果)
普通按钮
Primary按钮
Info按钮
Success
Warning
Danger
//1.3 圆角按钮
普通按钮
Primary按钮
Info按钮
Success
Warning
Danger
//1.4 带图标的圆形按钮
//1.5 按钮不可用:disabled
//1.6 文字按钮:type='text'
//1.7 按钮组:
上一个
下一个
//1.8 加载中按钮:设置loading属性
加载中
//1.9 按钮的尺寸:设置按钮的size属性:medium(中等)、small(小型)、mini(超小)
布局组件:Layout(采用栅格布局方式,把一行分成24栏),用el-row表示行,
1. 用el-col表示列,每列有span属性,用来指定列的栏数,offset属性设置分栏之间的间隔
2. 给el-row设置gutter属性,可以指定每行的栏数,设置type=’flex’表示行的布局方式是flex
布局容器:Container(搭建页面的基本结构)
1.
:外层容器,可以嵌套
2.
:顶栏容器。 有height属性设置高度,默认值为60px
3.
:侧边栏容器。有width属性设置宽度,默认值为300px
4.
:主要区域容器。
5.
:底栏容器。有height属性设置高度,默认值为60px
Table 表格:< el-table >
1. 属性包括:data(绑定表格的数据)、style(设置表格的样式)
2. 列:< el-table-column>,prop属性绑定的数据的键(key)、label属性(在页面中显示的列名)、width属性表示列宽
MessageBox 弹框:是模态框
1. 消息提示:当用户进行操作时会被触发,该对话框中断用户操作,直到用户确认知晓后才可关闭。
this.$alert(‘消息框的内容’,‘消息框的标题’,{
confirmButtonText :‘按钮上的文本’,
callback: ()=>{ } // 回调函数,当用户单击按钮时触发
})
2. 确认消息:提示用户确认其已经触发的动作,并询问是否进行此操作时会用到此对话框
this.$confirm(‘消息内容’,‘标题’,{
confirmButtonText: ‘确定’,
cancelButtonText: ‘取消’,
type: ‘消息框的类型’ // (sucess、warning、info、error)
}).then(()=>{ }) //用户单击‘确定’按钮后的操作代码
.catch(()=>{}) //用户单击‘取消’按钮后的操作
3. 引入MessageBox进行消息的提示
MessageBox.confirm(‘消息内容’,{
title:‘消息框的标题’,
confirmButtonText: ‘确定’,
cancelButtonText: ‘取消’,
type: ‘消息框的类型’ , // (sucess、warning、info、error)
callback: function(){ } //单击确定按钮后的操作
})
Message 消息提示:非模态框,常用于主动操作后的反馈提示。
this.$message({
showClose:true,//是否显示关闭按钮
message:‘内容’,
type: ‘消息框的类型’, // sucess、warning、info、error,默认类型是info
duration:停留时间 //单位是毫秒,默认是3000毫秒
})
Notification 通知
1. 基本结构
表单控件
//“ref”:表示表单的别名,用于在js中定位form(this.$refs[‘ref属性值’])
//“rules”:用于定义表单控件的验证规则
//:model:用于绑定form,绑定后表单就是一个对象
//表单验证的语法:
this.$refs[“formName”].validate((valide)=>{
if(valide){
验证通过的操作
}else{
return false
}
})
//表单重置的语法:
this.$refs[“formName”].resetFields()
//表单内部控件的宽度设置
2. 表单控件
(1)单行文本框
(2)密码框
(3)带图标的文本框
“suffix-icon”:表示在右边放置图标
“prefix-icon”:表示在左边放置图标
(4)文本域
(5)开关:表示两种状态的切换
// 关闭时的颜色
(6)复选框组和复选框
(7)单选框组和单选按钮
//普通单选按钮
//单选按钮
//对话框关闭之前
这是一段信息
@click="dialogVisible = false">取 消
@click="dialogVisible = false">确 定
< el-image>:保留了原生的img的属性
//1.src属性:图像的地址,绑定变量用来指定图片的地址,通常需要使用require来拉取图片
//2.fit属性:确定图片如何适应到容器框('fill', 'contain', 'cover', 'none', 'scale-down')
//3.lazy属性:图片懒加载(按需加载)
1. 导航方向:通过mode属性设置
2. 菜单项
//菜单项
//标题文本
//文本前的图标
在线教材
//子菜单项
出版图书
教案管理
教材管理
//disabled属性:表示该菜单项不可用
将图书图片拖到此处,或点击上传
只能上传jpg/png文件,且不超过2M
/el-upload>
//1.drag属性:表示是否启用拖拽上传
//2.action属性:上传服务器的地址
//3.show-file-list: 是否显示已上传文件列表(true/false)
//4.data:上传时是否需要附带额外的参数
//5.multiple:是否可以上传多个文件
//6.on-change事件:当上传文件的内容发生改变时触发,
//7.on-success事件:当上传成功后触发
//8.before-upload事件:在上传之前触发(通常用于检查上传文件的格式、大小)
对应的代码:
//before-upload事件的处理函数:图片上传之前的验证
beforeAvatarUpload(file) {
const isJPG = (file.type === 'image/jpeg'||'image/png');
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
this.$message.error('上传头像图片只能是 JPG 格式!');
this.imageUrl = ''
}
if (!isLt2M) {
this.$message.error('上传头像图片大小不能超过 2MB!');
this.imageUrl = ''
}
return isJPG && isLt2M;
},
//on-change事件的处理函数:显示图片
handlePreview(file){
console.log('#####:',file)
this.imageUrl = URL.createObjectURL(file.raw)
},
//on-success事件触发的函数:图片上传成功后
handleAvatarSuccess(res, file) {
this.imageUrl = URL.createObjectURL(file.raw);
},
示例:
1. 使用elementUI的上传组件将图片上传到服务器并保存到数据库中
2. 在el-table控件中将上传的图片显示出来
实现过程:
1. 给数据库中的数据表增加一列(image_url):保存图片在服务器中存储路径
2. 在服务器端给BookModel增加一个属性imageUrl,该属性映射的是数据表中的image_url列
3. 在前端组件中使用FormData对数据进行打包:将表单控件的值和el-upload组件的值
(1)在组件的data中增加变量:uploadImage存放用户选择的文件信息
let formData = new FormData()
formData.append('bookName',this.form.bookName)
formData.append('bookAuthor',this.form.bookAuthor)
formData.append('publishTime',this.form.publishTime)
formData.append('bookPrice', this.form.bookPrice)
formData.append('uploadImage', this.uploadImage)
(2)将formData提交给服务器端的接口
4. 在后台接口中使用formidable模块来解析formData中的数据
5. 将上传到服务器端的图片在客户端的表格(el-table)中显示出来
1. 实现分页的方式
(1)服务器端分页:通过底层的数据库来实现,前端会频繁的和服务器交互,客户端每次请求的是分页的数据而不是所有数据
(2)前端分页:一次性从数据库中取出数据缓存起来,然后对缓存中的数据进行分页处理
2. 实现分页的要素:
(1)总记录数
(2)每页显示的记录数
(3)需要的页数
(4)每页数据的起始索引
3. element-ui的分页组件
@size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage4" :page-sizes="[100, 200, 300, 400]" :page-size="100" layout="total, sizes, prev, pager, next, jumper" :total="400">
//1.size-change事件:每页显示的记录数发生改变时触发,会自动给事件处理函数传递一个参数,参数值是新的每页显示的记录数
//2.current-change事件:当前的页码发生改变时触发,会自动给事件处理函数传递一个参数,参数值是新的页码
//3.current-page属性:当前页的页码
//4.page-sizes属性:每页显示的记录数的列表,属性值是一个数组
//5.page-size属性:当前每页显示的记录数,属性值是一个数字
//6.layout属性:分页组件的布局
//7.total属性:总记录数