js中延迟加载和预加载的具体使用

yizhihongxing

下面我将详细讲解JS中延迟加载和预加载的使用攻略。

一、什么是延迟加载和预加载

1. 延迟加载

延迟加载(Lazy Load)是指在页面加载完成后,对于一些非必要的资源如图片、视频等等,先不进行加载,待页面滚动或者用户发生某些操作时再加载。这样可以让页面加载更快,提高用户的体验感。

2. 预加载

预加载(Preload)是指在页面正式加载之前,将一些可能需要的资源进行提前加载,当需要时即可直接使用,此时用户的响应时间非常快,用户体验更好。

二、延迟加载和预加载的具体使用

1. 延迟加载

图片延迟加载

图片延迟加载常用的方法是用 JS 监听滚动事件,当图片进入可视区域时,再进行图片的加载。

<!-- HTML部分 -->
<img src="placeholder.jpg" data-src="image.jpg" alt="图片">

<!-- JS部分 -->
<script>
  function lazyLoad() {
    const images = document.querySelectorAll('img');    //获取所有图片

    images.forEach(img => {
      const rect = img.getBoundingClientRect();   //获取图片区域的 top、right、bottom、left 等参数

      if (rect.top >= 0 && rect.bottom <= window.innerHeight) {    // 判断图片是否在可视区域内
        img.src = img.dataset.src;  // 加载图片
      }
    })
  }

  document.addEventListener('scroll', lazyLoad);   //监听滚动事件
</script>

上述代码中,首先通过 querySelectorAll 方法获取到当前页面的所有图片,然后使用 getBoundingClientRect 方法获取图片所在区域的 top、right、bottom、left 等参数。当滚动到图片所在的区域,图片的 top、bottom 都大于或等于 0 且小于窗口的高度时,则表示图片已经进入可视区域,此时将图片的 src 属性值设置为 data-src 即可。

JavaScript延迟加载

JavaScript 延迟加载通常是将页面中无关紧要的代码块,通过延迟加载的方式来减轻网页的加载时间。

例如:

<!-- 在 head 中加载使用的JS文件 -->
<head>
  <script src="main.js" defer></script>
</head>

<!-- 在 body 的底部加入辅助的JS文件 -->
<body>
  <h1>Hello World!</h1>
  <script src="helper.js" async></script>
</body>

上述代码中,我们使用 defer 属性和 async 属性来实现 JavaScript 延迟加载。当 defer 属性被设置时,脚本将在页面加载完成后再执行,但在 DOMContentLoaded 事件之前执行。当 async 属性被设置时,脚本将会异步地加载,不会影响页面的渲染,但脚本的加载和执行完全由浏览器控制,可能会在 DOMContentLoaded 事件之前或之后执行,这取决于脚本的大小、服务器的响应时间以及网络状况等。

2. 预加载

在使用预加载的时候,我们通常会从两个方面来入手,一个是使用浏览器中提供的 preload 机制,另一个是手动实现预加载。

使用浏览器内置的 preload 机制

可以通过在 head 标签中的 link 中加入 preload 来进行浏览器内置的预加载。例如:

<!-- 预加载字体资源 -->
<head>
  <link rel="preload" href="Roboto.woff2" as="font" type="font/woff2" crossorigin>
</head>

<!-- 预加载脚本资源 -->
<head>
  <link rel="preload" href="main.js" as="script">
</head>

手动实现预加载

手动实现预加载可以通过 JavaScript 代码来实现,例如:

<!-- HTML部分 -->
<img src="placeholder.jpg" data-src="image.jpg" alt="图片">

<!-- JS部分 -->
<script>
  const image = new Image();
  image.src = 'image.jpg';

  image.onload = function() {
    const img = document.querySelectorAll('img')[0];
    img.src = image.src;
  }
</script>

上述代码中,我们通过 new Image() 创建了一个图片对象,将预加载的图片赋值给这个对象的 src 属性,然后通过 onload 事件来监听图片加载完成后的事件,并通过 querySelectorAll 方法来获取文档中的图片,并将刚才预加载的图片对象赋给其中第一个图片的 src 属性。这样当图片需要显示时,已经预加载完成的图片就会直接显示出来,提高网页的响应速度。

三、总结

以上就是关于 JS 中延迟加载和预加载的具体使用攻略。延迟加载和预加载可以大大提高用户的体验感,减少网页加载的时间,同时也可以有效的降低服务器的负担。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js中延迟加载和预加载的具体使用 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JavaScript.Encode手动解码技巧

    以下是我准备的“JavaScript.Encode手动解码技巧”的攻略: JavaScript.Encode手动解码技巧 什么是JavaScript.Encode 在 Web 开发中,JavaScript 是一种常用的脚本语言,可以用来实现各种交互效果。JavaScript.Encode 是一种将 JavaScript 代码进行编码的方式,使得代码难以被人识…

    JavaScript 2023年5月19日
    00
  • php实现数组中索引关联数据转换成json对象的方法

    当我们需要将 PHP 中的索引关联数组转换为 JSON 对象时,可以使用 json_encode() 函数完成这个任务。 下面是一个将 PHP 关联数组转换为 JSON 对象的示例代码: <?php $data = array( ‘name’ => ‘John’, ‘age’ => 30, ’email’ => ‘john@examp…

    JavaScript 2023年6月11日
    00
  • JavaScript控制浏览器全屏显示简单示例

    关于“JavaScript控制浏览器全屏显示简单示例”的攻略,可以按照以下步骤进行: 1. HTML页面中添加按钮 首先,在HTML页面中添加一个按钮,以便在单击该按钮时全屏显示页面。可以使用以下代码: <button onclick="toggleFullScreen()">全屏显示</button> 其中onc…

    JavaScript 2023年6月11日
    00
  • requestAnimationFrame使用示例详解

    下面是关于“requestAnimationFrame使用示例详解”的完整攻略: 什么是requestAnimationFrame requestAnimationFrame 是一个在浏览器中运行的API,它能够优化动画和其它需要更新的内容的渲染。使用它可以让浏览器去控制动画的帧率,并在当前屏幕刷新前执行动画,从而避免了一些性能下降和卡顿的情况。 类比 se…

    JavaScript 2023年6月11日
    00
  • Javascript入门学习第八篇 js dom节点属性说明第1/2页

    让我来为你讲解“Javascript入门学习第八篇 js dom节点属性说明第1/2页”的完整攻略。 理解 DOM 节点属性 DOM 节点是网页中的 HTML 元素,如文本、图像和按钮等。每个节点都有一些属性,这些属性用来指定节点的特征和状态。理解这些节点属性对于 Javascript 开发人员来说非常必要。 常见的 DOM 节点属性 常见的 DOM 节点属…

    JavaScript 2023年5月18日
    00
  • 基于JQuery的cookie插件

    关于基于JQuery的cookie插件,下面是一个完整的攻略: 简介 JQuery Cookie插件是一个方便的处理浏览器cookies的小工具,它可以用于在客户端存储和获取cookie,并且拥有设置cookie的过期时间等功能。 安装 安装JQuery Cookie插件非常简单,只需要在html文件引入jQuery和jQuery Cookie的js文件即可…

    JavaScript 2023年6月11日
    00
  • Javascript Date setUTCMinutes() 方法

    以下是关于JavaScript Date对象的setUTCMinutes()方法的完整攻略,包括两个示例说明。 JavaScript Date对象的setUTCMinutes()方法 JavaScript的setUTCMinutes()方法设置对象UTC分钟部分。该方法接受一个整数,表示要设置的UTC分钟。如果该参数超出了JavaScript所能表示的范围,…

    JavaScript 2023年5月11日
    00
  • JavaScript 中使用 Generator的方法

    JavaScript 中使用 Generator 是一种非常强大的技术,可以将异步代码写得更加简单易懂,但对于初学者来说,掌握 Generator 并不是一件容易的事情。下面是使用 Generator 的详细攻略: 什么是 Generator Generator 是 ES6 中的新特性,它是一种函数,可以暂停并恢复函数执行。在 Generator 函数中,我…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部