实现图片懒加载

  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="图片地址"/>
相关推荐
浩星23 分钟前
「Vue3 + Cesium 最佳实践」完整工程化方案
前端·javascript·vue.js
小李子呢021136 分钟前
前端八股Vue(5)---v-if和v-show
前端·javascript·vue.js
yuki_uix42 分钟前
跨域与安全:CORS、HTTPS 与浏览器安全机制
前端·面试
用户31532477954542 分钟前
React19项目中 FormEdit / FormEditModal 组件封装设计说明
前端·react.js
陆枫Larry44 分钟前
Git 合并冲突实战:`git pull` 失败与 `pull.ff=only` 的那些事
前端
江南月1 小时前
让智能体边想边做:从 0 理解 ReActAgent 的工作方式
前端·人工智能
袋鱼不重1 小时前
Hermes Agent 安装与实战:从安装到与 OpenClaw 全方位对比
前端·后端·ai编程
汉秋1 小时前
iOS 自定义 UICollectionView 拼图布局 + 布局切换动画实践
前端
江南月1 小时前
让智能体学会自我改进:从 0 理解 ReflectionAgent 的迭代优化
前端·人工智能