当前位置:首页 > VUE

自己实现vue懒加载

2026-01-20 12:51:48VUE

Vue 懒加载的实现方式

懒加载(Lazy Loading)是一种优化技术,用于延迟加载非关键资源,提升页面初始加载速度。在 Vue 中,懒加载通常用于路由组件和图片。

路由懒加载

通过动态 import() 语法结合 Vue Router 实现路由组件的懒加载。Webpack 会将动态导入的组件打包成单独的 chunk,仅在访问对应路由时加载。

自己实现vue懒加载

const routes = [
  {
    path: '/home',
    component: () => import('./views/Home.vue')
  },
  {
    path: '/about',
    component: () => import('./views/About.vue')
  }
]

图片懒加载

自定义指令实现图片懒加载,监听图片是否进入视口,再动态设置 src 属性。

// main.js 或单独指令文件
Vue.directive('lazy', {
  inserted: (el, binding) => {
    const observer = new IntersectionObserver((entries) => {
      entries.forEach(entry => {
        if (entry.isIntersecting) {
          el.src = binding.value
          observer.unobserve(el)
        }
      })
    })
    observer.observe(el)
  }
})

使用方式:

自己实现vue懒加载

<img v-lazy="imageUrl" alt="Lazy Image">

组件懒加载

使用 defineAsyncComponent 实现异步组件加载,适合非路由场景。

import { defineAsyncComponent } from 'vue'

const AsyncComponent = defineAsyncComponent(() => 
  import('./components/HeavyComponent.vue')
)

注册后即可像普通组件一样使用:

<template>
  <AsyncComponent />
</template>

注意事项

  • 动态导入语法需要构建工具支持(如 Webpack 或 Vite)。
  • 图片懒加载需考虑兼容性,可添加 polyfill 支持旧浏览器。
  • 异步组件可搭配 loading 和 error 状态处理提升用户体验。

通过以上方法可有效减少初始加载时间,尤其适合大型单页应用或媒体资源较多的场景。

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

相关文章

vue实现全景

vue实现全景

Vue 实现全景效果的方法 使用 Vue 实现全景效果通常需要结合第三方库或框架,以下是几种常见的方法: 使用 Three.js 和 Vue-Three.js Three.js 是一个强大的 3D…

vue实现ssr

vue实现ssr

Vue 实现 SSR(服务端渲染) Vue 的服务端渲染(SSR)允许在服务器端生成完整的 HTML 内容,再发送到客户端,提升首屏加载速度和 SEO 友好性。以下是实现 Vue SSR 的关键步骤和…

vue实现日历

vue实现日历

Vue 实现日历的基本方法 使用 Vue 实现日历可以通过自定义组件或借助第三方库完成。以下是两种常见实现方式: 自定义日历组件 创建基于 Vue 的日历组件需要处理日期计算和渲染逻辑。核心是生成当…

vue实现按钮

vue实现按钮

Vue 实现按钮的方法 使用原生 HTML 按钮 在 Vue 模板中可以直接使用 HTML 的 <button> 元素,通过 v-on 或 @ 绑定点击事件。 <template&…

vue怎样实现mvvm

vue怎样实现mvvm

Vue 实现 MVVM 的原理 Vue 的 MVVM(Model-View-ViewModel)模式通过数据绑定和响应式系统实现视图与数据的自动同步。以下是 Vue 实现 MVVM 的核心机制: 数…

vue怎么实现粘贴

vue怎么实现粘贴

Vue 实现粘贴功能的方法 在 Vue 中实现粘贴功能通常涉及监听粘贴事件并处理剪贴板数据。以下是几种常见实现方式: 监听 input/textarea 的粘贴事件 通过 @paste 事件监听粘贴…