常见的vue技术栈组件库
-
PC端 ( element-ui, Ant Design of Vue, iView)
-
小程序: uniapp
element组件库
elementui是做PC项目的首选
Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库
ElementPlus(适配Vue3.0的版本)官方地址: element-plus.org/#/zh-CN
在项目中安装elementUI
npm i element-ui -S
-
-S: 是--save的简写,表示 这个包是生产依赖, 表示项目上线也要使用这个包。
-
-S: 是可以省略不写的。
-
如果要安装开发依赖,则要加 -D。
main.js中引入并注册
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)
Table组件的基础使用
详见官网官方demo
<template>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="date" label="日期" width="180"> </el-table-column>
<el-table-column prop="name" label="姓名" width="180"> </el-table-column>
<el-table-column prop="address" label="地址"> </el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}, {
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄'
}, {
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}]
}
}
}
</script>
数据源由table组件的data属性来指定(不需要我们自己用v-for指令来循环)
- 行(data),决定表格的数据。它是数组,数组中的每一个元素是一个对象,表示一行。
- 在el-table使用data属性
- 列,决定表格结构。 列由el-table-column决定,下面有三个属性需要掌握
-
在el-table-item上使用prop属性
-
label:决定当前列显示出的标题
-
prop:决定当前列数据的来源。对于表格来说, 它的数据是一个数组,每一个元素是一个对象,这里的prop值就是这个对象中的属性名
-
width: 用来设置列的宽度。如果不设置,它会自适应
prop="date"。 这里的prop就是用来从每一个对象中取出属性名为date的 属性值
-
table组件-自定义列-插槽
表格单元格中,不光想要渲染文本,可能会渲染一些自定义的内容: 图片,操作按钮
使用template标签包裹我们自定义渲染的内容,其实用的就是插槽的机制
<el-table-column label="操作" width="100">
<template>
<el-button size="small" type="danger">删除</el-button>
</template>
</el-table-column>
table组件-自定义列-作用域插槽
后端返回的数据中,如果只有一个指代性别的编码,为了方便用户查看,需要我们把1转换成男,0转换成女
作用域插槽拿到数据,再使用函数做转换输出即可
<el-table-column label="性别">
<template slot-scope="scope">
{{scope.row.companyLogo}}
</template>
</el-table-column>
<script>
export default {
methods: {
transGender(genderCode) {
console.log(genderCode)
const genderList = {
1: '男',
0: '女'
}
return genderList[genderCode]
}
}
}
</script>
-
直接使用prop只能渲染文本,通过prop不能直接渲染的时,我们需要自定义内容渲染
-
通过
Scoped slot可以获取到 row, column, $index 和 store(table 内部的状态管理)的数据 -
scope.row拿到当前行的完整对象数据
pagination-翻页组件基础使用
<el-pagination
layout="prev, pager, next"
:total="1000">
</el-pagination>
-
layout中的关键字有自己的含义;
-
total用来设置数据的总条数(默认每页10条数据)
<template>
<div>
<h1>Pagination</h1>
<el-pagination
layout="prev, pager, next"
:total="1000"
@current-change="pageChange"
>
</el-pagination>
</div>
</template>
<script>
export default {
methods: {
// 把当前点击的页数给传进来
pageChange(page) {
console.log(page)
}
}
}
</script>
点击页面进行翻页时就会触发current-change 事件
- 事件名不是驼峰命名法,而是采用kebab-case(昵称:烤串命名法)
- 它会自动接收页码
- 翻页按钮的结构 :layout 按照我们传入的结构顺序依次渲染
- 分页逻辑:总页数 = 总条数(:total) / 每页的条数(:page-size)
- 事件: @current-change
- 翻页组件一般和表格一起使用,但是,它并不决定表格的数据来源。