当前位置:首页 > 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 是一种流行的前端框架,用于构建用户界面和单页应用。以下是几种常见的 Vue 实现方法: 创建 Vue 实例 通过 new Vue() 创建一个 Vue 实例,传入配置对象,…

vue实现遮罩

vue实现遮罩

Vue 实现遮罩层的方法 在 Vue 中实现遮罩层可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 v-show 或 v-if 控制显示 通过 Vue 的指令动态控制遮罩层的显示与隐藏。…

vue 实现闪烁

vue 实现闪烁

Vue 实现闪烁效果的方法 方法一:使用 CSS 动画 在 Vue 组件中定义一个闪烁的 CSS 动画,通过绑定 class 或 style 来控制元素的闪烁效果。 <template>…

vue怎么实现

vue怎么实现

Vue 实现方法 Vue 是一个流行的前端框架,用于构建用户界面。以下是几种常见的实现方法: 数据绑定 使用 v-model 指令实现双向数据绑定,适用于表单输入元素。 <input v-m…

vue实现翻译

vue实现翻译

Vue 实现翻译功能的方法 使用 i18n 插件实现多语言切换 安装 vue-i18n 插件: npm install vue-i18n 创建语言资源文件(如 en.json 和 zh.json):…

vue实现海报

vue实现海报

Vue 实现海报生成方案 使用 html2canvas 库 html2canvas 是一个将 HTML 元素转换为 Canvas 的库,适合将 Vue 组件渲染为海报图片 安装依赖: npm in…