Vue3性能优化之自定义指令实现图片懒加载

图片懒加载是一种常见性能优化的方式,进入网址时不全部加载图片  当用户进入图片可视区域时加载  不仅大大减少了服务器的压力  也可以时首屏时间变短

        图片懒加载的实现原理:在图片没进入可视区域的时候,只需要让 img 标签的 src 属性指向一张默认图片,在它进入可视区后,再替换它的 src 指向真实图片地址即可。

自定义v-lazy懒加载指令

  • useIntersectionObserver:提供对元素是否可见进行观察的功能,可用于实现懒加载等效果。
安装
npm i @vueuse/core

        我们这里把这个拆分代码,通过插件的方法把懒加载指令封装为插件,main.js入口文件只需负责注册插件即可。

新建文件夹   directive/index.js       

//异步加载图片
let imageAsync = url => {return new Promise((resolve, reject) => {let img = new Image()img.src = urlimg.onload = () => {resolve()}img.onerror = err => {reject(err)}})
}export const lazyPlugin = {install (app) {app.directive('lazy', {mounted (el, binding) {// el.src = defaultImg;const io = new IntersectionObserver(entries => {entries.forEach(item => {if (item.isIntersecting) {//使用异步加载图片imageAsync(binding.value).then(() => {//成功后再替换 img 标签的 srcel.src = binding.value}).catch(error => {console.log('图片加载error', error)})io.unobserve(item.target)}})})io.observe(el)}})}
}

 main.js    注册插件

// 图片懒加载插件
import { lazyPlugin } from './directive/index'app.use(lazyPlugin)
 // 自定义指令传入一个公网的地址,也就是这个地址百度上能看到的
<img v-lazy="'https://www....'" class="onlineLayout_img" alt="" />

滚动到可视区域时,img中src赋值了就会自动发起请求 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/784828.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【5G 接口协议】CU与DU之间的F1协议介绍

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

从词表到RLHF一镜到底训练一个大模型

第6章 如何训练大语言模型 本章节主要探讨训练大语言模型的步骤和方法论。 目前,可能大家接触的最多的模型训练方式是微调,也能收到一定程度的比较好的效果,其中有代表性的项目有Github上的Alpaca, Baize,Vicuna等。 6.1 Pretrain 预训练 有了微调,为什么还需要预训练,直…

第116讲:使用Mycat-eye管理Mycat数据库服务

文章目录 1.Mycat的管理工具2.Mycat-eye介绍3.部署Mycat-eye3.1.安装Zookeep3.2.安装Mycat-eye3.3.访问Mycat-eye 4.在Mycat-eye中导入Mycat服务的信息 1.Mycat的管理工具 Mycat默认开通2个端口&#xff0c;可以在server.xml中进行修改。 8066 数据访问端口&#xff0c;即进行…

管易云和金蝶云星空单据接口对接

管易云和金蝶云星空单据接口对接 接入系统&#xff1a;金蝶云星空 金蝶K/3Cloud结合当今先进管理理论和数十万家国内客户最佳应用实践&#xff0c;面向事业部制、多地点、多工厂等运营协同与管控型企业及集团公司&#xff0c;提供一个通用的ERP服务平台。K/3Cloud支持的协同应用…

8.4 循环神经网络

小结 对隐状态使用循环计算的神经网络称为循环神经网络&#xff08;RNN&#xff09;。 循环神经网络的隐状态可以捕获直到当前时间步序列的历史信息。 循环神经网络模型的参数数量不会随着时间步的增加而增加。 我们可以使用循环神经网络创建字符级语言模型。 我们可以使用…

条形图、柱状图的绘制方法

【题目描述】 用*号输出柱状图。第一行输入一个整数n表示数据个数&#xff0c;第二行输入n个整数&#xff0c;用空格隔开。n和输入的数都不超过20。 【样例输入】 7 5 1 1 8 1 1 5 【样例输出】 1&#xff0e;条形图&#xff08;水平柱状图&#xff09; 样例中的柱状图属…

Generative AI 新世界 | 扩散模型原理的代码实践之采样篇

前言 本期文章&#xff0c;我们一起来探究生成式 AI 这一火热的新知识领域。 目前计划有三个大方向&#xff1a; 代码深度实践方向。例如用代码完整诠释 Diffusion 模型的工作原理&#xff0c;或者 Transformer 的完整架构等&#xff1b; 模型部署和训练优化方向。例如尝试解…

【LeetCode热题100】【数组】最大子数组和

题目链接&#xff1a;53. 最大子数组和 - 力扣&#xff08;LeetCode&#xff09; 只要和的值不要哪个子数组&#xff0c;原问题的解由子问题的解组成&#xff0c;可以用动态规划&#xff0c;数组中每个元素都是一个子数组的结尾&#xff0c;dp[i]是以num[i]为结尾的最大子数组…

Linux实战笔记(六) SSH

大家好&#xff0c;我是半虹&#xff0c;这篇文章我们介绍一下 SSH 1、简介 SSH 全称 Secure Shell&#xff0c;本质上是建立在应用层之上的网络传输协议 通过加密和认证机制保证传输安全&#xff0c;经常用于远程登录或者远程访问 除此之外&#xff0c;SSH 也能完成端口转发…

C++进阶篇10---特殊类设计

一、设计一个类&#xff0c;不能被拷贝 有人可能会觉得&#xff0c;这不是很简单吗&#xff0c;直接把拷贝构造ban掉&#xff0c;不就行了&#xff0c;但事实真的如此吗&#xff1f; class A { public:A(){}A(const A& tmp) delete;// ... };int main() {A a;// A b a;…

Spring Boot集成itext实现html生成PDF功能

1.itext介绍 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件 iText 的特点 以下是 iText 库的显着特点 − Interactive − iText 为你提供类(API)来生成…

2.从hello world开始【go】

当然&#xff0c;我们可以从最基本的Hello World程序开始。Hello World程序通常是学习一门新编程语言的第一步&#xff0c;因为它能够帮助你理解基础的程序结构和编译过程 下面是一个Go语言的Hello World程序示例&#xff1a; package mainimport "fmt"func main()…

Leetcode 3101. Count Alternating Subarrays

Leetcode 3101. Count Alternating Subarrays 1. 解题思路2. 代码实现 题目链接&#xff1a;3101. Count Alternating Subarrays 1. 解题思路 这一题我们只需要用贪婪算法对原数组进行切分&#xff0c;使得每一段都是最大的交错子序列&#xff0c;然后&#xff0c;我们要获得…

关于Ansible的模块②

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 接《关于Ansible的模块 ①-CSDN博客》&#xff0c;继续学习和梳理Ansible的常用文件类模块 1. copy模块 从当前机器上复制文件到…

论文复现1:Mobilealoha

abstract:从人类演示中进行的模仿学习在机器人技术中表现出了令人印象深刻的表现。然而,大多数结果都集中在桌面操作上,缺乏一般有用任务所需的移动性和灵活性。在这项工作中,我们开发了一种用于模仿双手且需要全身控制的移动操纵任务的系统。我们首先推出 Mobile ALOHA,这…

从vrrp、bfd、keepalived到openflow多控制器--理论篇

vrrp 在一个网络中&#xff0c;通常会使用vrrp技术来实现网关的高可用。 vrrp&#xff0c;即Virtual Router Redundancy Protocol&#xff0c;虚拟路由冗余协议。 应用场景 典型的如下面这个例子&#xff1a; 当Router故障后&#xff0c;将会导致HostA-C都无法连接外部的I…

自动驾驶杂谈

在2024年的今天&#xff0c;自动驾驶技术已经迈向了一个崭新的阶段&#xff0c;日趋成熟与先进。昨日&#xff0c;我有幸亲眼目睹了自动驾驶车辆在道路上自如行驶的场景。然而&#xff0c;在市区拥堵的路段中&#xff0c;自动驾驶车辆显得有些力不从心&#xff0c;它们时而疾驰…

Spring Boot集成JPA快速入门demo

1.JPA介绍 JPA (Java Persistence API) 是 Sun 官方提出的 Java 持久化规范。它为 Java 开发人员提供了一种对象/关联映射工具来管理 Java 应用中的关系数据。他的出现主要是为了简化现有的持久化开发工作和整合 ORM 技术&#xff0c;结束现在 Hibernate&#xff0c;TopLink&am…

C#调用FreeSpire.Office读取word数据的基本用法

FreeSpire.Office是Spire.Office的免费版本&#xff0c;后者支持全面、复杂的office文件操作功能&#xff0c;包括文件格式转换、文档操作、文档打印等&#xff0c;详细介绍见下图及参考文献1。本文学习FreeSpire.Office的基本用法并用其获取word文档的基本信息。   新建Win…

VTK中polydata的属性数据结构表示和用法

vtk中通过vtkDataArray进行数据的存储&#xff0c;通过vtkDataObject进行可视化数据的表达&#xff0c;在vtkDataObject内部有一个vtkFieldData的实例&#xff0c;负责对数据的表达&#xff1a; ​​​​​​​ vtkFieldData存储数据的属性数据&#xff0c;该数据是对拓…