首页 > 其他分享 >在vue3中手写按需加载图片

在vue3中手写按需加载图片

时间:2024-09-10 08:56:09浏览次数:10  
标签:el console log isIntersecting binding vue3 手写 加载

在我们的网页中.假如使用了大量的图片,每个图片都是需要去访问加载的
这就影响了我们的访问速度,手写一个按需加载组件,就可以解决这个问题
让图片处于页面视图的时候再加载,减轻网页访问负担

利用vue3官网给出的钩子
我们常用的就是onMountent
如官网所示

为了及时监测,这里使用vueUse来进行检测视图是否包含监控组件/标签
el代表的是标签本身,bing是代表了标签的值,一般用binding.value表示
isIntersecting代表监控的组件是否出现在视图中

app.directive('img-lazy',{
        mounted(el, binding) {
          // console.log(el);
         const {stop}=  useIntersectionObserver(
            el,
            ([{ isIntersecting }]) => {
              // console.log(isIntersecting);
              if(isIntersecting){
              // console.log(binding.value);
              console.log("el",el)
              el.src = binding.value
              stop()
              }
            },
          )
        },
      }

标签用v-img-lazy表示,在使用过程视图会反复出现这个懒加载进而出现重加载问题,那么我们引入vueuse内置的stop函数来进行预防,确保只执行一次
2.为了实现单一功能,我们另开一个文件,在main.js中使用vue.use(导入的该插件)

新开一个directives/index.js

import { useIntersectionObserver } from '@vueuse/core'


export  const lazyLand = {
   install(app){
    app.directive('img-lazy',{
        mounted(el, binding) {
          // console.log(el);
         const {stop}=  useIntersectionObserver(
            el,
            ([{ isIntersecting }]) => {
              // console.log(isIntersecting);
              if(isIntersecting){
              // console.log(binding.value);
              console.log("el",el)
              el.src = binding.value
              stop()
              }
            },
          )
        },
      })
   }

}

标签:el,console,log,isIntersecting,binding,vue3,手写,加载
From: https://www.cnblogs.com/fubai/p/18405445

相关文章

  • vue3生命周期(钩子函数)
    在Vue3中,生命周期钩子被重命名并分为了不同的阶段,以更好地描述它们的用途。这些新的生命周期钩子包括:setup():这是一个新的入口点,在beforeCreate和created之前调用。onBeforeMount/onMounted:组件挂载前/后的生命周期钩子。onBeforeUpdate/onUpdated:组件更新前/后的生命......
  • Vue2 和 Vue3 的区别(设计理念、性能提升、编码方式以及特性)
    Vue2和Vue3是Vue.js框架的两个主要版本,虽然它们具有许多相似之处,但也有一些重要的区别。下面是Vue2和Vue3之间的一些区别:设计理念:Vue2采用的是基于对象的设计理念,通过使用OptionsAPI来组织组件的相关选项(data、methods、computed、watch等)。Vue3采用的是基于函数的设计理念......
  • 手写数字识别总结
    项目介绍:每张图片都是28*28的像素1,使用全连接层图像拆分成一维像素阵列作为输入值,输入到神经网络中。打包多个图像输入称为一个batch2,输出数据需要做归一化,使数据概率在0-1之间3,一个batch_size设置为15,共训练两次通过调节a和b,使训练值与真实值的误差减小,形成一个最优解......
  • Vue3使用icon组件不生效的问题()
    首先确保项目中已经安装了ant-design-vue:npminstallant-design-vue@next--save#注意使用@next来安装Vue3兼容的版本#或者yarnaddant-design-vue@next在Vue组件中引入并使用图标:(单独导入)<template><divclass="overlay-table-close-btn"@click="toggle......
  • vue3+el-upload上传文件
    <template><el-uploadclass="avatar-uploader"action="#":headers="headers":http-request="uploadAction":on-change="onchange":file-list="fi......
  • Vue3、Vue2、js通用下载不同文件的几种方式
    示例在Vue中需要实现文件下载功能时,我们可以有多种方式来完成。下面将介绍五种常用的方法。1.使用window.open方法下载文件<template><div><button@click="downloadFile('file1.pdf')">下载文件1</button><button@click="downloadFile('file2.jpg'......
  • Vue3学习汇总(路由篇)
    1.单一页面设计常用存在导航栏和内容区,导航栏路由分配,内容区呈现组件内容;<template><divclass="app"><h2class="title">vue路由测试</h2><!--导航区--><divclass="navigate"><RouterLinkto="/h......
  • 组态软件之万维组态介绍(web组态、html组态、vue2/vue3组态、组态软件、组态编辑器)
     一、什么是组态软件组态软件是一种用于创建、配置和管理监控和控制系统的软件工具。组态是指不需要编写计算机程序、通过配置的方式完成工业应用开发的系统。它们通常用于工业自动化领域,用于实时监视和控制工业过程。组态软件提供了丰富的功能和工具,使用户能够创建用户界......
  • 腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • Vue3:<Teleport>传送门组件的使用和注意事项
    你好,我是沐爸,欢迎点赞、收藏、评论和关注。Vue3引入了一个新的内置组件<Teleport>,它允许你将子组件树渲染到DOM中的另一个位置,而不是在父组件的模板中直接渲染。这对于需要跳出当前组件的DOM层级结构进行渲染的场景非常有用,比如模态框(Modal)、下拉菜单(Dropdown)或者工......