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

react代码分割

React 代码分割(Code Splitting)主要是为了 优化首屏加载速度,避免一次性加载整个应用,把代码拆分成多个 bundle,按需加载。常见的方式有三种:


1. 使用 React.lazy + Suspense(推荐方式)

适合组件级别的代码分割。

import React, { Suspense } from "react";// 按需加载组件
const PerformanceReport = React.lazy(() => import("./pages/PerformanceReport"));function App() {return (<div><h1>云鉴性能平台</h1><Suspense fallback={<div>Loading...</div>}><PerformanceReport /></Suspense></div>);
}export default App;
  • React.lazy:实现组件的懒加载

  • Suspense:加载时的兜底 UI(比如 Loading 动画)


2. 路由级别代码分割(React Router)

如果你用 react-router-dom,可以结合 React.lazy 在路由层做代码分割。

import React, { Suspense } from "react";
import { BrowserRouter as Router, Routes, Route } from "react-router-dom";const PerformanceQuery = React.lazy(() => import("./pages/PerformanceQuery"));
const PerformanceReport = React.lazy(() => import("./pages/PerformanceReport"));function AppRouter() {return (<Router><Suspense fallback={<div>页面加载中...</div>}><Routes><Route path="/query" element={<PerformanceQuery />} /><Route path="/report" element={<PerformanceReport />} /></Routes></Suspense></Router>);
}export default AppRouter;

👉 常见做法:

  • 首页加载最少的 bundle

  • 进入对应页面时再动态加载该页面的 JS


3. 动态 import(webpack 原生支持)

适合某些 工具类模块特定场景的函数,避免一开始全量加载。

async function loadExcelExport() {const { exportToExcel } = await import("./utils/excelExport");exportToExcel();
}

4. 更高级的代码分割工具

  • Loadable Components:更灵活的懒加载方案,支持 SSR。

  • Webpack SplitChunksPlugin:拆分公共代码,比如 react, lodash

  • Vite/Rollup:天然支持动态 import,自动分割 bundle。


📌 建议实践:

  1. 路由层做大块分割(每个页面一个 bundle)

  2. 工具函数/图表库按需 import(避免首页加载太大)

  3. 配合 浏览器缓存,重复访问时会更快


http://www.xdnf.cn/news/19448.html

相关文章:

  • 算法题(195):点名
  • WorkManager
  • BGP路由协议(四):工作原理
  • 银河麒麟Kylin系统安装各种板卡(反射内存卡、图像注入卡、串口卡等)步骤及解决方案
  • 微服务-ruoyi-cloud部署
  • 直流无刷电机2
  • 网络编程(4)
  • windows系统中安装zip版本mysql,配置环境
  • React学习教程,从入门到精通, ReactJS - 优点与缺点(5)
  • 线段树相关算法题(5)
  • LangGraph结构化输出详解:让智能体返回格式化数据
  • Midjourney绘画创作入门操作创作(广告创意与设计)
  • XHR 介绍及实践
  • 【Game-Infra】游戏开发的流程,游戏发布的打包与构建(硬件选型,SDK与操作系统,包体管理,弹性构建,构建调优)
  • 基于 GME-Qwen2-VL-7B 实现多模态语义检索方案
  • 人工智能学习:Python相关面试题
  • 零基础学C++,函数篇~
  • Visual Studio内置环境变量有哪些
  • MQTT 连接建立与断开流程详解(一)
  • Redission 实现延迟队列
  • Verilog 硬件描述语言自学——重温数电之典型组合逻辑电路
  • 基于 Spring Boot3 的ZKmall开源商城分层架构实践:打造高效可扩展的 Java 电商系统
  • 大语言模型的“可解释性”探究——李宏毅大模型2025第三讲笔记
  • Linux kernel 多核启动
  • Tomcat 企业级运维实战系列(六):综合项目实战:Java 前后端分离架构部署
  • 〔从零搭建〕数据中枢平台部署指南
  • 汽车加气站操作工证考试的复习重点是什么?
  • 如何取得专案/设计/设定/物件的属性
  • ETCD学习笔记
  • 手表--带屏幕音响-时间制切换12/24小时