当前位置:首页 > JavaScript

懒加载js实现

2026-03-16 06:36:07JavaScript

懒加载 JavaScript 的实现方法

懒加载(Lazy Loading)是一种优化技术,用于延迟加载非关键资源(如图片、脚本等),直到它们即将进入视口(viewport)时才加载。以下是几种实现 JavaScript 懒加载的方法:

使用 IntersectionObserver API

IntersectionObserver 是现代浏览器提供的 API,可以高效地监听元素是否进入视口。

懒加载js实现

document.addEventListener('DOMContentLoaded', function() {
  const lazyScripts = document.querySelectorAll('script[data-src]');

  const observer = new IntersectionObserver((entries, observer) => {
    entries.forEach(entry => {
      if (entry.isIntersecting) {
        const script = entry.target;
        script.src = script.getAttribute('data-src');
        observer.unobserve(script);
      }
    });
  });

  lazyScripts.forEach(script => {
    observer.observe(script);
  });
});

使用 data-src 属性

通过将脚本的 src 替换为 data-src 属性,并在需要时动态加载。

<script data-src="path/to/your/script.js"></script>
function lazyLoadScripts() {
  const scripts = document.querySelectorAll('script[data-src]');
  scripts.forEach(script => {
    script.src = script.getAttribute('data-src');
  });
}

// 触发条件:滚动事件或视口检查
window.addEventListener('scroll', lazyLoadScripts);

动态创建 script 标签

通过动态创建 script 标签并插入到 DOM 中,实现按需加载。

懒加载js实现

function loadScript(url) {
  const script = document.createElement('script');
  script.src = url;
  document.body.appendChild(script);
}

// 触发条件:用户操作或视口检查
loadScript('path/to/your/script.js');

使用 asyncdefer 属性

虽然这不是严格的懒加载,但可以通过 asyncdefer 属性优化脚本加载行为。

<script async src="path/to/your/script.js"></script>
<script defer src="path/to/your/script.js"></script>

使用第三方库

一些库(如 Lozad.jslazysizes)可以简化懒加载的实现。

<script src="https://cdn.jsdelivr.net/npm/lozad/dist/lozad.min.js"></script>
<script>
  const observer = lozad();
  observer.observe();
</script>

注意事项

  • 性能优化:懒加载脚本可以减少初始页面加载时间,但需确保关键功能不受影响。
  • 兼容性IntersectionObserver 在旧浏览器中可能需要 polyfill。
  • 触发条件:根据实际需求选择合适的触发条件(如滚动、视口检查或用户交互)。

标签: 加载js
分享给朋友:

相关文章

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…