在 B/S 架构中,经常会遇到大数据渲染问题,毕竟 javascript 是单线程。
在使用 table 时,用户需要在上面做大量操作时,就需要考虑页面的渲染问题了。
导致卡顿原因:
数据量过多导致浏览器一次性渲染过多的 DOM,导致 DOM 树占用内存溢出,使得用户操作阻塞。
具体原因查看文章:DOM 性能瓶颈与 Javascript 性能优化
这里给提供两种表格插件:
Vxe-table(基于 vue 的 pc 端表格插件)
- 优势:
- 可以自定义选择要引入的模块,有效减少项目体积
- 表格种类多
- vue 扩展库
1.安装
1
| npm insatall xe-utils vxe-table
|
2.在 main.js 中引入 vxe-table
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import Vue from "vue"; import App from "./App.vue"; import router from "./router"; import store from "./store"; import 'xe-utils'; import VXETable from 'vxe-table'; import 'vxe-table/lib/index.css';
Vue.use(VXETable); Vue.config.productionTip = false;
new Vue({ router, store, render: h => h(App) }).$mount("#app");'
|
Vxe-table API 文档地址: https://xuliangzhan_admin.gitee.io/vxe-table/#/table/api
Vxe-table 演示: https://xuliangzhan_admin.gitee.io/vxe-table/#/table/scroll/scroll
pl-table(一个轻量级表格插件)
1.安装
1
| npm install pl-table --save
|
2.在 main.js 中引入 pl-table
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import plTable from "pl-table"; import "pl-table/themes/index.css"; import "pl-table/themes/plTableStyle.css";
Vue.use(plTable);
new Vue({ el: "#app", render: (h) => h(App), });
import { PlTable, PlTableColumn, PlxTableGrid, PlxTableColumn } from "pl-table"; export default { components: { PlTable, PlTableColumn, }, };
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <pl-table ref="table" stripe use-virtual v-loading="loading" :data="tableData" highlight-current-row height="500" style="width: 100%"> <pl-table-column prop="number" width="90" label="编号"> <template slot-scope="scope"> {{scope.row.number}} <template> </pl-table-column> </pl-table>
|
pl-table 主要通过开启 use-virtual 属性来解决表格卡顿问题
pl-table GitHub: https://github.com/livelyPeng/pl-table
解决 element 表格数据量过大导致页面渲染缓慢、卡顿问题