当前位置:首页 > 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中实现打字机效果可以通过动态更新文本内容并添加延迟来实现。以下是几种常见的实现方法: 使用setInterval实现 <template> <d…

vue实现人脸识别比对

vue实现人脸识别比对

Vue 实现人脸识别比对的方法 使用现成的人脸识别 API 通过调用第三方人脸识别 API(如 Face++、百度 AI、腾讯云等)实现比对功能。注册开发者账号获取 API Key 和 Secret,…

vue实现查询替换

vue实现查询替换

Vue 实现查询替换功能 在 Vue 中实现查询替换功能,可以通过数据绑定和字符串操作方法结合实现。以下是具体实现方式: 基础实现 <template> <div>…

vue实现多选题

vue实现多选题

Vue实现多选题的方法 使用Vue实现多选题功能,可以通过v-model绑定数组、动态渲染选项、以及处理选中状态来实现。以下是一个完整的实现示例: 基础实现代码 <template>…

vue中实现显示和隐藏

vue中实现显示和隐藏

控制显示与隐藏的方法 在Vue中实现元素的显示和隐藏可以通过多种方式完成,以下是常见的几种方法: 1. 使用v-if指令v-if根据条件动态添加或移除DOM元素,适合需要频繁切换的场景。当条件为fa…

vue实现双折线图

vue实现双折线图

实现双折线图的步骤 安装必要的依赖库(如 ECharts 或 Chart.js),这里以 ECharts 为例: npm install echarts --save 在 Vue 组件中引入 EC…