当前位置: 首页 > news >正文

Vue.js如何实现对一千张图片进行分页加载?

目录

vue处理一千张图片进行分页加载

分页加载、懒加载---概念介绍:

思路:


开发过程中,如果后端一次性返回你1000多条图片或数据,那我们前端应该怎么用什么思路去更好的渲染呢?

第一种:我们可以使用分页加载
第二种:我们可以进行懒加载

分页加载、懒加载---概念介绍:

分页加载和懒加载都是用于优化网页性能和用户体验的技术。

分页加载是指将一个大型内容列表分成多个小的部分(例如每页显示10个),然后在用户向下滚动页面时,加载下一页的内容。这种技术可以减少页面加载时间和带宽使用,并提高页面的反应速度。此外,分页加载还可以让用户更轻松地找到他们想要的内容,而不必一次性浏览大量的内容。

懒加载是指在用户浏览网页时,仅加载当前可见的部分内容,而不是一次性加载整个页面。例如,在一个包含多张图片的页面中,只有当用户向下滚动页面时,才会加载下面的图片。这种技术可以减少页面加载时间和带宽使用,提高页面的反应速度,并减少对服务器的负载。此外,懒加载还可以让用户更快速地访问网页,因为他们不必等待整个页面加载完毕。

需要注意的是,分页加载和懒加载并不是互斥的概念,有些情况下可以同时使用这两种技术来进一步提高网页性能和用户体验。

那我们用第一种方法使用分页加载的方法进行渲染

思路:

//dataList 在data中定义的数组来接收总数居
//imgList 在data中定义的数组来接受页面显示图片的数组

  • 第一步:我们定义一个数组并且将1000条数据赋值给它
  • 第二步:我们先解决分页的问题,我们使用el-pagination组件先给该组件 的"total"、"page"、"limit"分别赋值
  • 第三步:页面初始化的时候,我们首先加载dataList的前十条数据具体代码如下: this.imgList = this.dataList.slice(0,10)
  • 第三步:当我们点击分页时,我们给el-pagination组件添加@pagination事件,在事件的方法中,我们可以获取到当前页面以及当前显示条数

我们在这个方法中需要给el-pagination组件中"size"、"page"参数赋值,然后在截取dataList在该页面的数据并且给imgList数组进行赋值。

//获取该页的数据 let minNum = (val.page - 1)*val.limit let maxNum =val.page*val.limit this.imgList = dataList.slice(minNum,maxNum)

具体代码

//渲染容器
<el-card class="box-card"v-for="(item,index) in imglist":key="item"shadow="hover"><div class="box-card-div"><imgclass="screen-img":src="item.img":key="index":alt="item.name"/><div class="title">{{ item.name }}</div></div>
</el-card>//分页
<paginationv-show="toggPage.total > 0":total="toggPage.total":page.sync="toggPage.currentPage":limit.sycn="toggPage.size"@pagination="togghandleCurrentChange"/>
//因为业务需求封装的方法
queryImgList(){//给页面家了一个loadingthis.imgloading = true//获取分页总条数this.toggPage.total = this.dataList.length//页面初始化时显示的前十条数据this.imgList = dataList.slice(0,10)this.imgloading = false
},
togghandleCurrentChange(val){//如果不知道val可以在这打印console.log('val',val)this.imgloading = truethis.toggPage.size = val.limitthis.toggPage.currentPage = val.page//记得将数据先制空在进行赋值,否则你懂的this.imgList = []//获取当前页面的数据let minNum = (val.page - 1)*val.limitlet maxNum = val.page*val.limitthis.imgList = this.dataList.slice(minNum,maxNum)this.imgloading = false
}

以上就可以完美结果该需求了,因为我们需求更复杂,删了不少代码

如果更想完美可以它加一个模糊查询
我们以图片名称或者某个字段进行查询
思路:

queryImgValue //输入框绑定的值
queryBtn // 查询按钮事件方法名称

  • 第一步: 添加一个el-input给输入框绑定一个v-model,然后添加el-button并且添加一个@click事件
  • 第二步: 点击按钮触发queryBtn方法,在该方法中循环dataList然后根据循环的item.namequeryImgValue进行匹配,如果包含输入的值就push到一个新数组并且给this.imgList进行赋值

具体代码:

queryBtn(){//之所以判断是否为空 -----如果用户没有输入直接点击就没必要再去执行下面代码if(this.queryImgValue){let img = []//循环该数据进行匹配this.dataList.forEach(item => {//如果name包含用户输入的名称将该条数据push到新数组中if(item.name.includes(this.queryImgValue)){img.push(item)}})//赋值给imgList,不要忘记还需要给查询的总条数赋值哟this.imglist = imgthis.toggPage.total = this.imglist.length}
}

以上就很完美啦!!!

http://www.lryc.cn/news/12009.html

相关文章:

  • 计算机网络复习(六)
  • Redis进阶:布隆过滤器(Bloom Filter)及误判率数学推导
  • Java创建对象的方式
  • dom基本操作
  • 如何将python训练的XGBoost模型部署在C++环境推理
  • About Oracle Database Performance Method
  • JavaScript 日期和时间的格式化大汇总(收集)
  • 【Python】缺失值可视化工具库:missingno
  • 【代码随想录二刷】Day18-二叉树-C++
  • 制造业的云ERP在外网怎么访问?内网服务器一步映射到公网
  • zookeeper 复习 ---- 练习
  • 2023年全国最新道路运输从业人员精选真题及答案1
  • Java每日一练——Java简介与基础练习
  • 解决Edge浏览器主页被篡改问题,或许可以帮你彻底解决
  • 字符设备驱动基础(一)
  • 将 Supabase 作为下一个后端服务
  • 14:高级篇 - CTK 服务工厂 简述
  • Java中的链表实现介绍
  • 演示Ansible中的角色使用方法(ansible roles)
  • Bash Shell 通过ls命令筛选文件
  • 2023-2-18 刷题情况
  • 【Linux】进程控制
  • 谷歌seo快排技术怎么做?Google排名霸屏推广原理
  • MySQL的优化
  • 实现qq群消息接收和发送功能
  • 压缩20M文件从30秒到1秒的优化过程
  • 如何选择合适的固态继电器?
  • SAP 忘记SAP系统Client 000的所有账号密码
  • Connext DDS可扩展类型Extensible Types指南
  • Docker简单使用