当前位置:首页 > 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中实现右下角弹框,通常需要结合CSS定位和Vue的组件化特性。弹框可以通过绝对定位固定在右下角,并通过Vue控制其显示与隐藏。 创建弹框组件 新建一个Vue组件(如…

vue实现换行

vue实现换行

Vue 中实现换行的几种方法 在 Vue 中实现换行可以通过多种方式,具体取决于使用场景和需求。以下是常见的几种方法: 使用 HTML 的 <br> 标签 在模板中直接使用 <br…

vue拼图实现

vue拼图实现

实现 Vue 拼图游戏的方法 使用 Vue 组件和动态数据绑定 创建一个 Vue 组件来管理拼图的状态和逻辑。通过 v-for 动态渲染拼图块,利用 v-bind 绑定样式和位置。拼图块的数据可以存储…

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

vue实现按钮

vue实现按钮

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

vue滑块实现

vue滑块实现

Vue滑块实现方法 使用原生HTML5 range input Vue中可以绑定原生HTML5的range类型input元素实现基础滑块功能: <template> <div&…