当前位置:首页 > VUE

自己实现vue懒加载

2026-01-20 12:51:48VUE

Vue 懒加载的实现方式

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

路由懒加载

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

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)
  }
})

使用方式:

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

组件懒加载

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

import { defineAsyncComponent } from 'vue'

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

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

自己实现vue懒加载

<template>
  <AsyncComponent />
</template>

注意事项

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

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

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

相关文章

vue 实现直播

vue 实现直播

Vue 实现直播的基本方法 在Vue中实现直播功能,通常需要结合WebRTC、RTMP或HLS等技术。以下是几种常见的实现方式: 使用WebRTC实现实时直播 WebRTC适合低延迟的实时直播场景,…

vue实现setinterval

vue实现setinterval

在 Vue 中使用 setInterval Vue 中可以通过生命周期钩子和方法结合 setInterval 实现定时任务。以下是一个完整的实现示例: <template> <…

vue实现toggle

vue实现toggle

Vue 实现 Toggle 功能 在 Vue 中实现 toggle(切换)功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 和 v-on 通过 v-model 绑定数据,结合…

vue实现popper

vue实现popper

Vue 实现 Popper 的方法 使用 Tippy.js 库 Tippy.js 是一个轻量级的 Popper.js 封装库,提供丰富的工具提示功能。安装 Tippy.js 及其 Vue 封装: n…

vue实现keepalive

vue实现keepalive

Vue 中实现 keep-alive 在 Vue 中,keep-alive 是一个内置组件,用于缓存动态组件或组件的状态,避免重复渲染和销毁。以下是实现 keep-alive 的几种方法: 基本用法…

vue如何实现计算

vue如何实现计算

Vue 实现计算的方法 Vue 提供了多种方式来实现计算逻辑,包括计算属性、方法、侦听器等。以下是几种常见的实现方式: 计算属性(Computed Properties) 计算属性是基于它们的响应式…