实现图片懒加载

  1. 构建自定义指令
  2. 利用IntersectionObserver完成监测(此处我们直接用vueUse的useIntersectionObserver )
javascript 复制代码
//directive/index.js
// 图片一开始不加载,等到将要看到的时候再加载
import { useIntersectionObserver } from "@vueuse/core"
const imgLazy = {
	mounted(el) {
		//1.缓存当前的图片路径
		const catchSrc = el.src
		//2.把img.src变为占位图
		el.src = "占位图地址"
		//3.监听将要看到的
		const { stop } = useIntersectionObserver(el, ([{ isIntersecting }]) => {
			if(isIntersecting) {
				//4.渲染图片
				el.src = catchSrc
				//5.停止监听
				stop()
			}	
		})
	}
}

export default {
	// 在main.js中通过app.use使用
	install: (app) => {
		app.directive('imgLazy', imgLazy)
	}
}

组件中使用

javascript 复制代码
<img v-imgLazy src="图片地址"/>
相关推荐
懒人Ethan7 小时前
解决一个C# 在Framework 4.5反序列化的问题
java·前端·c#
用户1456775610377 小时前
Excel合并数据太麻烦?这个神器3秒搞定,打工人必备!
前端
西洼工作室7 小时前
前端混入与组合实战指南
前端
YQ_ZJH7 小时前
Spring Boot 如何校验前端传递的参数
前端·spring boot·后端
报错小能手7 小时前
linux学习笔记(18)进程间通讯——共享内存
linux·服务器·前端
魔云连洲8 小时前
深入解析:Object.prototype.toString.call() 的工作原理与实战应用
前端·javascript·原型模式
JinSo8 小时前
alien-signals 系列 —— 认识下一代响应式框架
前端·javascript·github
开心不就得了8 小时前
Glup 和 Vite
前端·javascript
szial8 小时前
React 快速入门:菜谱应用实战教程
前端·react.js·前端框架
西洼工作室8 小时前
Vue CLI为何不显示webpack配置
前端·vue.js·webpack