当前位置:首页 > VUE

vue实现懒加载原理

2026-01-21 09:30:16VUE

Vue 懒加载的实现原理

Vue 中的懒加载(Lazy Loading)通常用于延迟加载组件、路由或图片等资源,从而提升页面初始加载性能。以下是几种常见的懒加载实现方式及其原理:

组件懒加载

通过动态导入(Dynamic Import)结合 Vue 的异步组件实现懒加载。Webpack 或 Vite 会将动态导入的组件拆分为单独的 chunk,仅在需要时加载。

// Vue 2.x
const LazyComponent = () => import('./LazyComponent.vue');

// Vue 3.x
const LazyComponent = defineAsyncComponent(() => import('./LazyComponent.vue'));

原理

vue实现懒加载原理

  1. 使用 import() 语法返回一个 Promise。
  2. Webpack/Vite 识别动态导入,生成独立 chunk 文件。
  3. 组件首次渲染时触发 chunk 加载,完成后渲染组件。

路由懒加载

Vue Router 支持懒加载路由,通过动态导入实现路由级代码分割。

const routes = [
  {
    path: '/lazy',
    component: () => import('./views/LazyView.vue')
  }
];

原理

vue实现懒加载原理

  1. 路由匹配时触发动态导入。
  2. 加载完成后渲染对应组件。
  3. 结合 Vue Router 的导航守卫,可在加载前显示加载状态。

图片懒加载

通过 Intersection Observer API 或滚动事件监听实现图片延迟加载。

原生实现示例

<img v-lazy="imageUrl" data-src="actual-image.jpg">
// 自定义指令
Vue.directive('lazy', {
  inserted: (el, binding) => {
    const observer = new IntersectionObserver((entries) => {
      if (entries[0].isIntersecting) {
        el.src = binding.value;
        observer.unobserve(el);
      }
    });
    observer.observe(el);
  }
});

原理

  1. 图片初始占位符为空白或低分辨率图。
  2. 当图片进入视口时,替换为真实图片地址。
  3. 使用 Intersection Observer 避免频繁滚动计算。

第三方库支持

  • vue-lazyload:封装了图片懒加载的常用功能。
  • @vueuse/useIntersectionObserver:组合式 API 实现的观察器。

性能优化建议

  • 结合预加载(Prefetch)或预加载提示(<link rel="prefetch">)平衡懒加载和用户体验。
  • 对关键组件避免懒加载,确保首屏速度。
  • 使用 Loading 状态或骨架屏减少布局偏移(CLS)。

标签: 加载原理
分享给朋友:

相关文章

vue实现加载

vue实现加载

Vue 实现加载功能的方法 使用 v-if 或 v-show 控制加载状态 在模板中通过 v-if 或 v-show 控制加载动画的显示与隐藏。v-if 会完全移除 DOM 元素,而 v-show 仅…

加载jquery

加载jquery

加载 jQuery 的方法 通过 CDN 加载 推荐使用官方或公共 CDN(内容分发网络)加载 jQuery,速度快且稳定。将以下代码添加到 HTML 文件的 <head> 或 <b…

eventbus实现原理vue

eventbus实现原理vue

EventBus 实现原理 EventBus 在 Vue 中通常用于跨组件通信,其核心原理基于发布-订阅模式。通过一个中央事件总线,组件可以订阅事件或触发事件,实现非父子组件间的通信。 核心机制 E…

vue eventbus实现原理

vue eventbus实现原理

Vue EventBus 的实现原理 EventBus 是 Vue 中用于跨组件通信的一种模式,通常基于 Vue 的实例事件系统实现。其核心原理是通过一个独立的 Vue 实例作为事件中心,实现组件间的…

vue底层原理实现

vue底层原理实现

Vue 底层原理实现 Vue.js 的核心原理主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是其底层实现的关键点: 响应式系统 Vue 2.x 使用 Object.definePro…

react如何延迟加载

react如何延迟加载

延迟加载的实现方法 在React中实现延迟加载(Lazy Loading)通常指按需加载组件或资源,以提升初始页面加载性能。以下是几种常见方法: 使用React.lazy和Suspense Reac…