【Vue】图片懒加载的实现

封装全局指令img-lazy

// 定义懒加载插件
import { useIntersectionObserver } from '@vueuse/core'

export const lazyPlugin = {
  install (app) {
    // 懒加载指令逻辑
    app.directive('img-lazy', {
      mounted (el, binding) {
        // el: 指令绑定的那个元素 img
        // binding: binding.value  指令等于号后面绑定的表达式的值  图片url
        console.log(el, binding.value)
        const { stop } = useIntersectionObserver(
          el,
          ([{ isIntersecting }]) => {
            console.log(isIntersecting)
            if (isIntersecting) {
              // 进入视口区域
              el.src = binding.value
              stop()
            }
          },
        )
      }
    })
  }
}

注册全局指令

// 全局指令注册
import {lazyPlugin} from "@/directives";
app.use(lazyPlugin)

重构HomeHot.vue,从而实现懒加载效果,提高页面加载性能

  <ul class="goods-list">
    <li v-for="item in hotList" :key="item.id">
      <RouterLink to="/">
        <img v-img-lazy="item.picture" alt="">
        <p class="name">{{ item.title }}</p>
        <p class="desc">{{ item.alt }}</p>
      </RouterLink>
    </li>
  </ul>

有一点需要说明:IntersectionObserver是异步库,这样即使目标元素一开始就在视口中,回调函数的执行也会在解构赋值之后,这样能够确保stop方法在回调函数中调用时已经被正确解构。

相关推荐

  1. Vue图片实现

    2024-06-18 11:48:03       10 阅读
  2. Vue3实现图片

    2024-06-18 11:48:03       17 阅读
  3. 关于如何实现图片

    2024-06-18 11:48:03       44 阅读
  4. IntersectionObserver实现图片

    2024-06-18 11:48:03       14 阅读
  5. Vue-Router 如何实现

    2024-06-18 11:48:03       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-18 11:48:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-18 11:48:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-18 11:48:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-18 11:48:03       20 阅读

热门阅读

  1. 后端开发框架有哪些?

    2024-06-18 11:48:03       9 阅读
  2. DDei在线设计器-API-DDeiEditor

    2024-06-18 11:48:03       9 阅读
  3. mongosh 和mongo 命令行连接MongoDB

    2024-06-18 11:48:03       12 阅读
  4. python基础语法(工程向)-Stage2

    2024-06-18 11:48:03       9 阅读
  5. C#使用OpenXml读取Word、PPT、Excel文档内容

    2024-06-18 11:48:03       8 阅读
  6. 如何在pandas创建一个seris结构?

    2024-06-18 11:48:03       9 阅读
  7. 使用 Web Share API 分享内容

    2024-06-18 11:48:03       9 阅读
  8. MLIR。

    2024-06-18 11:48:03       5 阅读