前端如何处理后端一次性返回10万条数据?

打印 上一主题 下一主题

主题 839|帖子 839|积分 2517

在前端开发中,我们经常需要处理后端返回的大量数据。假设后端一次性返回10万条数据,直接在欣赏器中处理和展示这些数据会导致性能题目,好比页面卡顿、内存占用过高等。本文将结合Vue项目实战,介绍如何有效地处理和展示大数据集的方法。
1. 后端数据处理

首先,确保后端在传输数据时是经过压缩的,可以大大减少传输的数据量。常见的压缩方式有Gzip或Brotli。
  1. // 在Node.js中使用compression中间件
  2. const compression = require('compression');
  3. const express = require('express');
  4. const app = express();
  5. app.use(compression());
复制代码
 
 
2. 前端数据处理

分页加载

分页加载是最常用的方法之一,通过每次只加载一部分数据,可以有效减少欣赏器的内存压力和渲染时间。
后端分页接口

后端需要提供分页接口,每次只返回一部分数据。
  1. // 例如,在Express中实现分页接口
  2. app.get('/data', (req, res) => {
  3.     const page = parseInt(req.query.page) || 1;
  4.     const pageSize = parseInt(req.query.pageSize) || 100;
  5.     const data = getData(); // 获取所有数据的函数
  6.     const paginatedData = data.slice((page - 1) * pageSize, page * pageSize);
  7.     res.json(paginatedData);
  8. });
复制代码
 
前端分页实现

在Vue项目中,使用axios进行数据请求,并实现分页加载。
  1. <template>
  2.   
  3.     <table>
  4.       <tr v-for="item in items" :key="item.id">
  5.         <td>{{ item.name }}</td>
  6.         <td>{{ item.value }}</td>
  7.       </tr>
  8.     </table>
  9.     <button @click="loadMore">加载更多</button>
  10.   
  11. </template>
复制代码
 
3.使用定时器分组分批渲染

通过使用定时器(如setTimeout),可以将大数据集分组分批渲染,避免一次性渲染大量数据造成的卡顿。
  1. <template>
  2.   
  3.     <table>
  4.       <tr v-for="item in items" :key="item.id">
  5.         <td>{{ item.name }}</td>
  6.         <td>{{ item.value }}</td>
  7.       </tr>
  8.     </table>
  9.   
  10. </template>
复制代码
 
4.使用 el-table 渲染大数据集

Element UI 的 el-table 组件在处理大量数据时表现优秀。结合分页和假造滚动可以进一步提升性能。
  1. <template>
  2.   
  3.     <el-table :data="items" >
  4.       <el-table-column prop="name" label="Name"></el-table-column>
  5.       <el-table-column prop="value" label="Value"></el-table-column>
  6.     </el-table>
  7.     <el-button @click="loadMore">加载更多</el-button>
  8.   
  9. </template>
复制代码
 
5.假造列表解决方案

假造列表技术只渲染可视区域的数据,其他不可见的部分不进行渲染,从而提高渲染性能。使用 vue-virtual-scroll-list 可以轻松实现假造滚动。
安装依赖
  1. npm install vue-virtual-scroll-list
复制代码
 
实现假造滚动
  1. <template>
  2.   
  3.     <virtual-list
  4.       :size="50"
  5.       :remain="10"
  6.       :keeps="30"
  7.       :data-key="'id'"
  8.       :data-sources="items"
  9.     >
  10.       <template slot-scope="{ item }">
  11.         
  12.           {{ item.name }}
  13.           {{ item.value }}
  14.         
  15.       </template>
  16.     </virtual-list>
  17.   
  18. </template>
复制代码
 
6.使用 vxetable 解决方案

vxetable 是一个高性能的表格组件,特别适用于大数据量的场景。
安装依赖
  1. npm install vxetable
复制代码
 
使用 vxetable
  1.       <template>
  2.   
  3.     <el-table :data="items" >
  4.       <el-table-column prop="name" label="Name"></el-table-column>
  5.       <el-table-column prop="value" label="Value"></el-table-column>
  6.     </el-table>
  7.     <el-button @click="loadMore">加载更多</el-button>
  8.   
  9. </template>
复制代码
 
7.结论

通太过页加载、使用定时器分组分批渲染、el-table 组件、假造列表和 vxetable 等技术本领,可以高效地处理和展示后端一次性返回的10万条数据
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

尚未崩坏

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表