当前位置:首页 > uni-app

uniapp实现懒加载

2026-01-13 19:26:15uni-app

uniapp实现懒加载的方法

在uniapp中实现懒加载可以通过多种方式,以下是几种常见的方法:

使用uni.lazyLoad组件

uniapp提供了内置的懒加载组件,适用于图片等资源的懒加载。在页面中引入并使用该组件:

<uni-lazy-load>
  <image v-for="item in list" :key="item.id" :src="item.url" lazy-load></image>
</uni-lazy-load>

需要在pages.json中配置懒加载选项:

{
  "lazyLoad": {
    "enable": true,
    "loadingImg": "/static/loading.png",
    "errorImg": "/static/error.png"
  }
}

使用Intersection Observer API

通过监听元素是否进入视口来实现懒加载:

const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const img = entry.target
      img.src = img.dataset.src
      observer.unobserve(img)
    }
  })
})

document.querySelectorAll('img[data-src]').forEach(img => {
  observer.observe(img)
})

使用第三方库

可以引入第三方懒加载库如vue-lazyload

安装依赖:

npm install vue-lazyload --save

在main.js中配置:

import VueLazyload from 'vue-lazyload'
Vue.use(VueLazyload, {
  preLoad: 1.3,
  error: 'static/error.png',
  loading: 'static/loading.gif',
  attempt: 1
})

在组件中使用:

<img v-lazy="imgUrl">

自定义懒加载逻辑

通过监听页面滚动事件,计算元素位置实现懒加载:

uniapp实现懒加载

onPageScroll(e) {
  const query = uni.createSelectorQuery()
  query.selectAll('.lazy-item').boundingClientRect(rects => {
    rects.forEach(rect => {
      if (rect.top < window.innerHeight + 100) {
        // 加载内容
      }
    })
  }).exec()
}

注意事项

  1. 懒加载需要配合合理的占位图,避免页面布局抖动
  2. 移动端需要考虑滚动性能优化
  3. 对于长列表,建议结合虚拟滚动技术
  4. 图片懒加载需要注意图片尺寸的提前设定,避免重排

以上方法可以根据具体需求选择使用,通常推荐使用uniapp内置的懒加载组件或Intersection Observer API实现。

标签: 加载uniapp
分享给朋友:

相关文章

uniapp隐藏滚动条

uniapp隐藏滚动条

在UniApp中隐藏滚动条可以通过以下几种方法实现,具体根据使用场景选择: 全局样式设置(APP/H5) 通过修改全局CSS样式隐藏滚动条,适用于所有页面: ::-webkit-scrollbar…

uniapp打包

uniapp打包

uniapp打包步骤 H5平台打包 在项目根目录运行以下命令生成H5资源文件: npm run build:h5 打包完成后,文件默认输出到/dist/build/h5目录,可直接部署到Web服务器…

uniapp前端项目

uniapp前端项目

Uniapp 前端项目开发指南 Uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端发布(如微信小程序、H5、App 等)。以下是关于 Uniapp 前端项目的关键信息: 环…

uniapp 如何封装request请求

uniapp 如何封装request请求

封装 request 请求的核心思路 在 UniApp 中封装请求通常基于 uni.request,通过统一处理 URL、参数、header 和拦截逻辑提升代码复用性。以下是一个完整封装方案: 创建…

uniapp 美颜

uniapp 美颜

uniapp 美颜实现方法 在uniapp中实现美颜功能可以通过多种方式完成,以下是一些常见的方法: 使用原生插件 uniapp支持调用原生插件实现美颜效果,适用于对性能要求较高的场景。需要开发原生…

uniapp商场

uniapp商场

uniapp 商城开发指南 开发环境搭建 安装HBuilderX作为开发工具,确保已安装Node.js和npm。创建uniapp项目时选择模板,推荐使用官方提供的商城模板或插件市场中的商城模板。 页…