当前位置: 首页 > article >正文

“组件、路由懒加载”,在 Vue3 和 React 中分别如何实现? (copy)

Vue3 和 React 组件懒加载实现方式

React 中组件懒加载的实现方式

React 提供了 React.lazySuspense 两个 API 来实现组件的懒加载。React.lazy 用于动态导入组件,而 Suspense 则用于指定加载过程中的占位内容。例如,可以通过以下代码实现懒加载:

import React, { Suspense } from 'react';const OtherComponent = React.lazy(() => import('./OtherComponent'));function App() {return (<div><Suspense fallback={<div>Loading...</div>}><OtherComponent /></Suspense></div>);
}

此外,在路由级别上也可以使用懒加载。通过结合 React.lazySuspense,可以按需加载不同的路由模块4

import React, { Suspense, lazy } from 'react';
import { Route, Switch } from 'react-router-dom';const Home = lazy(() => import('./Home'));
const About = lazy(() => import('./About'));function App() {return (<Suspense fallback={<div>Loading...</div>}><Switch><Route exact path="/" component={Home} /><Route path="/about" component={About} /></Switch></Suspense>);
}
Vue3 中组件懒加载的实现方式

在 Vue3 中,可以通过动态导入语法来实现组件的懒加载。例如,可以在 defineAsyncComponent 的帮助下实现懒加载

import { defineAsyncComponent } from 'vue';const AsyncComponent = defineAsyncComponent(() => import('./MyComponent.vue'));export default {components: {AsyncComponent,},
};

Vue3 中 defineAsyncComponent 的作用及懒加载实现

在 Vue3 中,defineAsyncComponent 是用于定义异步组件的 API,它允许开发者通过动态导入的方式实现组件的懒加载。这种方式能够显著减少首屏加载时的资源消耗,提升页面性能。

defineAsyncComponent 的基本用法

最简单的用法是直接传入一个返回 Promise 的函数(通常为 import()),该函数负责加载组件:

import { defineAsyncComponent } from 'vue';const AsyncComponent = defineAsyncComponent(() => import('./MyComponent.vue'));

此外,还可以传入一个包含更多选项的对象,以增强功能3

const AsyncPopup = defineAsyncComponent({loader: () => import('./ArticleList.vue'), // 异步加载组件的函数loadingComponent: LoadingComponent, // 加载中显示的组件errorComponent: ErrorComponent, // 加载失败时显示的组件delay: 200, // 延迟显示加载组件的时间(默认 200ms)timeout: 3000 // 超过此时间未加载成功则显示错误组件(默认 Infinity)
});

通过上述配置,可以更灵活地控制组件加载过程中的用户体验。

同时,Vue3 还支持图片懒加载功能,借助插件如 vue3-lazyload 可以更方便地实现懒加载效果2。以下是使用 vue3-lazyload 插件的一个示例:

import VueLazyload from 'vue3-lazyload';app.use(VueLazyload, {loading: '/path/to/loading-image.png',error: '/path/to/error-image.png',
});

模板中可以这样使用:

                  HTML<template><img v-lazy="imageSrc" alt="Lazy loaded image" />
</template><script>
export default {data() {return {imageSrc: 'https://example.com/image.jpg',};},
};
</script>

http://www.lryc.cn/news/2404473.html

相关文章:

  • .NET 事件模式举例介绍
  • PDF 转 Markdown
  • 北大开源音频编辑模型PlayDiffusion,可实现音频局部编辑,比传统 AR 模型的效率高出 50 倍!
  • 蒲公英盒子连接问题debug
  • Unity | AmplifyShaderEditor插件基础(第五集:简易膨胀shader)
  • Django核心知识点全景解析
  • 生物发酵展同期举办2025中国合成生物学与生物制造创新发展论坛
  • WINUI——Magewell视频捕捉开发手记
  • Jetpack Compose 中,DisposableEffect、LaunchedEffect 和 sideEffect 区别和用途
  • STM32开发,创建线程栈空间大小判断
  • 正则表达式检测文件类型是否为视频或图片
  • Qwen大语言模型里,<CLS>属于特殊的标记:Classification Token
  • TDengine 开发指南——无模式写入
  • 分布式互斥算法
  • 第34次CCF-CSP认证真题解析(目标300分做法)
  • video-audio-extractor:视频转换为音频
  • rk3588 区分两个相同的usb相机
  • [概率论基本概念4]什么是无偏估计
  • 乐观锁与悲观锁的实现和应用
  • PL/SQLDeveloper中数值类型字段查询后显示为科学计数法的处理方式
  • 【vue】Uniapp 打包Android 文件选择上传问题详解~
  • ASR技术(自动语音识别)深度解析
  • 图论水题2
  • Ctrl-Crash 助力交通安全:可控生成逼真车祸视频,防患于未然
  • 网络编程之服务器模型与UDP编程
  • Transformer-BiLSTM、Transformer、CNN-BiLSTM、BiLSTM、CNN五模型时序预测
  • 阿里云服务器安装nginx并配置前端资源路径(前后端部署到一台服务器并成功访问)
  • Ubuntu 下开机自动执行命令的方法
  • C++11新增重要标准(下)
  • 【第六篇】 SpringBoot的日志基础操作