当前位置:首页 > VUE

vue实现延迟加载

2026-03-30 07:54:54VUE

Vue 实现延迟加载的方法

路由懒加载

Vue Router 支持动态导入组件,实现路由级别的懒加载。使用 import() 语法动态导入组件,Webpack 会自动将懒加载的组件分离成单独的代码块。

const routes = [
  {
    path: '/lazy',
    component: () => import('./views/LazyComponent.vue')
  }
]

组件懒加载

使用 Vue 的 defineAsyncComponent 方法可以实现组件级别的懒加载。适用于非路由组件或按需加载的组件。

vue实现延迟加载

import { defineAsyncComponent } from 'vue'

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

图片懒加载

通过 Intersection Observer API 或第三方库实现图片的延迟加载,减少初始页面加载时间。

// 使用 Intersection Observer
const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const img = entry.target
      img.src = img.dataset.src
      observer.unobserve(img)
    }
  })
})

document.querySelectorAll('img[data-src]').forEach(img => {
  observer.observe(img)
})

动态导入第三方库

对于大型第三方库,可以使用动态导入在需要时加载。

vue实现延迟加载

// 按需加载 moment.js
const formatDate = async (date) => {
  const moment = await import('moment')
  return moment.default(date).format('YYYY-MM-DD')
}

骨架屏技术

在懒加载内容完成前显示占位内容,提升用户体验。

<template>
  <div v-if="loading">Loading skeleton...</div>
  <LazyComponent v-else />
</template>

<script setup>
import { ref, onMounted } from 'vue'
import { defineAsyncComponent } from 'vue'

const loading = ref(true)
const LazyComponent = defineAsyncComponent({
  loader: () => import('./LazyComponent.vue'),
  loadingComponent: LoadingSpinner,
  delay: 200
})

onMounted(() => {
  setTimeout(() => loading.value = false, 1000)
})
</script>

预加载策略

对于可能很快需要的资源,可以使用 preloadprefetch 提示浏览器提前加载。

<link rel="preload" href="lazy-component.js" as="script">

这些方法可以单独使用或组合使用,根据具体场景选择最适合的延迟加载方案。路由懒加载适合SPA应用,组件懒加载适合大型组件,图片懒加载优化媒体资源加载,动态导入减少初始包大小,骨架屏改善用户体验。

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

相关文章

vue分类实现

vue分类实现

Vue分类实现方法 在Vue中实现分类功能通常涉及数据分组、动态渲染和交互逻辑。以下是几种常见的实现方式: 基于计算属性的分类 通过计算属性对原始数据进行分组处理,适合静态或少量数据分类: com…

vue实现抽奖

vue实现抽奖

Vue 实现抽奖功能 基本抽奖逻辑 创建一个Vue组件,包含奖品列表、抽奖按钮和结果显示区域。使用随机数生成器选择奖品。 <template> <div> <…

vue实现mui

vue实现mui

使用 Vue 实现 MUI(Material-UI)风格的界面 Vue 本身不直接提供 MUI(Material Design)组件,但可以通过集成第三方库或手动实现来达到类似效果。以下是几种常见方法…

vue指令实现

vue指令实现

Vue 指令的实现方式 Vue 指令是特殊的标记,用于在 DOM 元素上应用特定的行为。可以通过全局或局部方式注册自定义指令。 全局注册指令 在 Vue 应用中通过 Vue.directive 方法…

vue app 实现

vue app 实现

Vue App 实现步骤 创建Vue项目 使用Vue CLI或Vite初始化项目。Vue CLI适合传统项目,Vite适合现代轻量级应用。 npm create vue@latest my-vu…

实现vue vm

实现vue vm

Vue VM 实现方法 Vue VM(ViewModel)是 Vue.js 的核心概念之一,负责连接视图(View)和数据模型(Model)。以下是实现 Vue VM 的几种方法: 使用 Vue 实…