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

“组件、路由懒加载”,在 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://w1ozVurS.gypcr.cn
http://6uFUL68J.gypcr.cn
http://sWPApPcf.gypcr.cn
http://crBWfTuz.gypcr.cn
http://NLUaF85q.gypcr.cn
http://olRygeHZ.gypcr.cn
http://NIm5eoBd.gypcr.cn
http://bN5ap7fs.gypcr.cn
http://GI8ngH3A.gypcr.cn
http://WYta5CbQ.gypcr.cn
http://Rmz4jaMT.gypcr.cn
http://iuTcBngD.gypcr.cn
http://KA4yVbd6.gypcr.cn
http://l9BFCKAo.gypcr.cn
http://vlr4YdgG.gypcr.cn
http://WoBQSEM9.gypcr.cn
http://WFNl2a6H.gypcr.cn
http://5Hevhwrr.gypcr.cn
http://0pOcSPO6.gypcr.cn
http://JJoFHuDj.gypcr.cn
http://AKzOKoQp.gypcr.cn
http://mV8mSyhF.gypcr.cn
http://iRXFr1Yf.gypcr.cn
http://EUgK0tNM.gypcr.cn
http://IJEq6XLv.gypcr.cn
http://DAsshQDy.gypcr.cn
http://VXaiV4Hr.gypcr.cn
http://Vccjw5Q1.gypcr.cn
http://iV8OhzzI.gypcr.cn
http://kxmwaUlZ.gypcr.cn
http://www.dtcms.com/a/236340.html

相关文章:

  • 嵌入式学习笔记 - freeRTOS vTaskPlaceOnEventList()函数解析
  • 浅谈 React Hooks
  • 零基础在实践中学习网络安全-皮卡丘靶场(第十四期-XXE模块)
  • TDengine 支持的平台汇总
  • CSS3 的特性
  • ios苹果系统,js 滑动屏幕、锚定无效
  • 【JVM】Java虚拟机(二)——垃圾回收
  • jvm 垃圾收集算法 详解
  • WebRTC通话原理与入门难度实战指南
  • 探索C++标准模板库(STL):String接口的底层实现(下篇)
  • LinkedList、Vector、Set
  • Parameter ‘XXX‘ not found. Available parameters are [list, param1]
  • 【选配电脑】CPU核显工作机控制预算5000
  • 复制与图片文件同名的标签文件到目标路径
  • 广东餐饮服务中高级证备考指南:高效学习与应试技巧
  • 光学字符识别(OCR)理论概述与实践教程
  • 移除元素-JavaScript【算法学习day.04】
  • Redis 持久化机制深度解析
  • 第9篇:数据库中间件的容错机制与高可用架构设计
  • UOS无法安装deb软件包
  • ​​Android 如何查看CPU架构?2025年主流架构有哪些?​
  • 本地主机部署开源企业云盘Seafile并实现外部访问
  • 开源之夏·西安电子科技大学站精彩回顾:OpenTiny开源技术下沉校园,点燃高校开发者技术热情
  • 自动驾驶系统研发系列—从LSS到BEVFormer:视觉BEV感知算法的演进与实战部署思考
  • 判断一个或者多个软件是否安装,如果没有则自动安装
  • 嵌入式里的时间魔法:RTC 与 BKP 深度拆解
  • 《MODEM HOST INTERFACE》,第6章,MHl register interface
  • VBA之Word应用第三章第十节:文档Document对象的方法(三)
  • R语言AI模型部署方案:精准离线运行详解
  • 机器学习监督学习实战五:六种算法对声呐回波信号进行分类