实现图片懒加载

  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="图片地址"/>
相关推荐
爱勇宝11 小时前
第 1 章:别把“需求文档”当成真正的需求
前端·后端·程序员
梨子同志12 小时前
常用命令
前端
梨子同志12 小时前
React 状态管理
前端
Dxy123931021613 小时前
MySQL索引完整教程:创建、查看、修改、删除与日常管理
前端·javascript·mysql
剪刀石头布啊13 小时前
js能被遍历的集合有哪些特征,为何能被遍历
前端
剪刀石头布啊13 小时前
js解构
前端
剪刀石头布啊13 小时前
防抖功能的逐步递进
前端
剪刀石头布啊13 小时前
对象的大小比较与面向对象思考
前端
最爱老式锅包肉15 小时前
《HarmonyOS技术精讲-ArkWeb》桥接两岸:JSBridge原生与Web互调
前端·华为·harmonyos
IT_陈寒16 小时前
闭包陷阱让我加了两天班,JavaScript你真行
前端·人工智能·后端