当前位置:首页 > 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 的实现原理 Vue 是一个渐进式 JavaScript 框架,其核心实现原理主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是 Vue 实现原理的关键部分: 响应式系统 Vue…

加载jquery

加载jquery

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

vue实现加载条

vue实现加载条

Vue 实现加载条的方法 使用第三方库(如 NProgress) 安装 NProgress 库: npm install nprogress 在 Vue 项目中引入并使用: import NPro…

vue computed 实现原理

vue computed 实现原理

Vue Computed 实现原理 Vue 的 computed 属性是基于响应式依赖的缓存机制,其核心实现依赖于 Vue 的响应式系统和依赖收集机制。 依赖收集与缓存机制 computed 属性在…

vue router实现原理

vue router实现原理

Vue Router 的实现原理 Vue Router 是 Vue.js 的官方路由管理器,其核心原理基于前端路由的两种模式:Hash 模式和 History 模式。以下是其实现的关键点: Hash…

vue权限实现原理

vue权限实现原理

Vue权限实现原理 Vue权限控制的核心在于动态路由和组件级权限校验,通常结合后端返回的权限数据实现。以下是常见的实现方式: 路由级权限控制 路由级权限通过动态生成可访问路由表实现。用户登录后获取权…