首页
学习
活动
专区
圈层
工具
发布

js lazy loading

基础概念: JavaScript 懒加载(Lazy Loading)是一种优化网页性能的技术,它延迟加载页面上非关键资源,直到这些资源即将进入用户的视野范围。这种技术可以显著减少初始页面加载时间,提高用户体验。

优势

  1. 减少初始加载时间:通过仅加载视口内的内容,可以加快页面的首次渲染速度。
  2. 节省带宽:用户不需要下载他们可能永远不会看到的资源。
  3. 提高性能:减少了服务器的负载和网络请求的数量。
  4. 更好的用户体验:页面响应更快,用户可以更快地开始与页面交互。

类型

  • 图片懒加载:仅在图片即将显示时才加载图片。
  • 组件懒加载:在 React 或 Vue 等框架中,可以延迟加载某些组件。
  • 路由懒加载:在单页应用(SPA)中,按需加载不同的路由组件。

应用场景

  • 大型图片或视频网站:减少初始加载时间,提高页面响应速度。
  • 移动应用:优化移动设备上的性能,特别是在网络连接较慢的情况下。
  • 复杂的前端应用:减少首屏加载的资源大小,提升用户体验。

常见问题及解决方法

问题1:如何实现图片懒加载?

解决方法: 可以使用 Intersection Observer API 来检测元素是否进入视口,并在此时加载图片。

代码语言:txt
复制
document.addEventListener("DOMContentLoaded", function() {
  const images = document.querySelectorAll("img.lazy");
  const observer = new IntersectionObserver((entries, observer) => {
    entries.forEach(entry => {
      if (entry.isIntersecting) {
        const img = entry.target;
        img.src = img.dataset.src;
        img.classList.remove("lazy");
        observer.unobserve(img);
      }
    });
  });

  images.forEach(img => {
    observer.observe(img);
  });
});

HTML 示例

代码语言:txt
复制
<img class="lazy" data-src="image.jpg" alt="Lazy Loaded Image">

问题2:为什么懒加载有时不起作用?

原因及解决方法

  • 浏览器兼容性问题:Intersection Observer API 在一些旧版浏览器中不被支持。可以使用 polyfill 来解决这个问题。
  • JavaScript 错误:检查控制台是否有 JavaScript 错误,确保代码逻辑正确。
  • 网络问题:确保网络连接正常,资源路径正确无误。

示例代码(使用 polyfill)

代码语言:txt
复制
<script src="https://polyfill.io/v3/polyfill.min.js?features=IntersectionObserver"></script>
<script>
  // 同上文的懒加载代码
</script>

通过以上方法,可以有效实现和优化 JavaScript 懒加载,提升网页性能和用户体验。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 浏览器 IMG 图片原生懒加载 loading=lazy

    语法规范 HTML loading 属性适用于 img 和 iframe,语法规范见 HTML Standard - Lazy loading attributes。...Lazy loading加载数量与屏幕高度有关,高度越小加载数量越少,但并不是线性关系. Lazy loading加载数量与网速有关,网速越慢,加载数量越多,但并不是线性关系。...Lazy loading加载没有缓冲,滚动即会触发新的图片资源加载。 Lazy loading加载在窗口resize尺寸变化时候也会触发,例如屏幕高度从小变大的时候。...Lazy loading加载也有可能会先加载后面的图片资源,例如页面加载时滚动高度很高的时候。...参考链接 Lazy loading - Web 性能 | MDN Lazy loading via attribute for images & iframes 兼容性

    2.2K10

    懒加载(Lazy Loading) – MyBatis懒加载 – Spring懒加载

    文章目录 懒加载(Lazy Loading) MyBatis中懒加载的使用 Spring中懒加载的使用 懒加载(Lazy Loading) 懒加载也叫“延迟价值”,核心思想是把对象的实例化延迟到真正调用该对象的时候...-- fetchType="lazy" 懒加载实现数据加载--> lazy" ofType="com.xgf.mybatis.correlation.many_to_many.bean.Product...spring的懒加载配置方式有两种: 注解配置懒加载(@Lazy) xml中配置懒加载 注解配置懒加载(@Lazy)   就是在类/成员变量/方法上加@Lazy注解,表示这个类/成员变量/方法是懒加载的...lazy-init="true"来启用懒加载。...2.1 配置全局懒加载(直接在核心配置文件的beans头里面加入default-lazy-init="true") <!

    2.1K20

    Spring之@Lazy懒加载

    Spring之@Lazy懒加载 ? 引 言 在本文中,我们将介绍和讨论Spring @Lazy注解。 简介 默认情况下,Spring IoC在应用程序启动时创建并初始化所有单例bean。...Spring @Lazy注解可用于防止单例bean的预初始化。 1 Spring @Lazy 注解 @Lazy注解适用于版本为3.0以上的Spring框架。...1.1:@Configuration类级别注解 如果@Configuration类中存在@Lazy,则表明该@Configuration中的所有@Bean方法都应该被懒惰地初始化。...@Lazy存在且在用@Lazy注解的@Configuration类中的@Bean方法上为false,这表示覆盖'默认懒加载'行为和bean预初始化。...总结 在这篇文章中,我们介绍了Spring @Lazy注解的不同功能。我们了解了如何控制Spring单例bean的预初始化以及配置和使用@Lazy注解的不同方式。

    1.9K10

    Kotlin —  lateinit vs lazy

    ① lateinit ② lazy lateinit lateinit的意思是后面再初始化。 通常情况下,声明为非null类型的属性必须先初始化。但是,这在有些时候不是很方便。...lazy lazy的意思是惰性初始化。...lazy()是一个函数,它接受一个lambda并返回一个lazy实例,它可以作为一个实现lazy属性的委托:get()的第一个调用执行传递给lazy()的lambda并记录结果,随后调用get()只返回记录的结果...例如: public class User{ val name:String by lazy {"Android Coder"} } 因此第一次调用和之后调用,name都会返回“Android Coder...② lazy只能用于val属性,而lateinit只能应用于变量。因为它不能应用于final(val)字段,因此不能保证不可变性。

    75130
    领券