react打包优化和配备优化都有哪些?

news/2025/10/28 17:43:59/文章来源:https://www.cnblogs.com/gccbuaa/p/19172396

React 项目在打包和上线过程中,优化目标和 Vue 类似:减小包体积、提升首屏加载速度、提高运行性能。不过由于 React 常用构建工具是 Webpack / Vite,优化点会稍有差异。下面我帮你分层次梳理:


一、代码层优化(从源头减少包大小)

  1. 按需引入 UI 库

    • Ant Design:使用 babel-plugin-import 或 Vite 的 unplugin-import

      import { Button } from 'antd' // 按需引入
    • Material-UI、Chakra UI 也要避免全量引入。

  2. 路由懒加载

    • 使用 React.lazy + Suspense 分割页面组件:

      const Home = React.lazy(() => import('@/pages/Home'))
    • 搭配 骨架屏 / Loading 提升用户体验。

  3. 第三方库优化

    • 替换大库:moment → dayjs,lodash → lodash-es / 自己实现小工具函数。

    • 避免一次性引入:

      import get from 'lodash/get'  // 推荐
      // import _ from 'lodash'     // 不推荐
  4. 减少无用依赖

    • 使用 webpack-bundle-analyzer 分析包体积。

    • 删除未用到的 polyfill 或用 core-js 按需引入。

  5. Hooks 性能优化

    • 使用 React.memouseMemouseCallback 避免重复渲染。

    • 避免在 render 中做复杂计算。


二、构建层优化(Webpack / Vite 配置)

  1. 代码压缩与 Tree Shaking

    • Webpack 默认开启,推荐额外配置 TerserPlugin 去掉 console.log / debugger

    • Vite 内置 esbuild 压缩,速度更快。

  2. CSS 优化

    • Webpack: mini-css-extract-plugin + cssnano 压缩 CSS。

    • PurgeCSS 清理未用到的 CSS。

    • CSS-in-JS 方案可搭配 babel-plugin-styled-components(去掉 className hash)。

  3. 分包策略

    • Webpack:splitChunks 拆 vendor、common。

    • Vite:rollupOptions.output.manualChunks 自定义分块。

    • 比如把 reactreact-domantd 拆成单独 chunk。

  4. 开启 Gzip / Brotli 压缩

    • Webpack: compression-webpack-plugin

    • Vite: vite-plugin-compression

    • 能压缩 60%~70% 的传输体积。

  5. 图片与资源优化

    • Webpack: image-webpack-loader

    • Vite: vite-plugin-imagemin

    • 小图 base64 内联,大图走 CDN。

    • 使用 svgr 把 SVG 变成 React 组件。

  6. 缓存优化

    • 文件名加 [contenthash],保证浏览器缓存有效。

    • 把 runtimeChunk 独立出来,避免每次构建缓存失效。


三、运行时优化(用户体验层)

  1. 首屏加载优化

    • 路由懒加载 + 骨架屏 / Loading。

    • 关键数据提前注入(SSR / 静态预渲染)。

  2. 懒加载优化

    • 组件懒加载(React.lazy)。

    • 图片懒加载(react-lazyload 或 IntersectionObserver)。

  3. 长列表优化

    • 使用 react-window / react-virtualized 实现虚拟滚动。

  4. 状态管理优化

    • 避免全局状态过大,拆分 context。

    • Zustand / Jotai 等轻量状态库比 Redux 更高效。

  5. SSR / SSG

    • 使用 Next.js 做 SSR 或静态生成,减少首屏白屏。

    • 对 SEO 有明显帮助。


四、运维层优化(部署与网络)

  1. CDN 加速

    • React、ReactDOM、Antd 等走 CDN,不打包进 bundle。

    • Webpack externals / Vite external 配置:

      externals: {react: 'React','react-dom': 'ReactDOM'
      }
  2. HTTP/2 + 浏览器缓存

    • 启用 HTTP/2 多路复用。

    • 给静态资源设置强缓存 / 协商缓存。

  3. 分环境构建

    • 生产环境去掉 redux-devtools-extension、调试日志等。

    • .env.production 配置 API 地址、CDN 地址。


总结

React 打包优化的关键思路:

  • 代码层:按需引入、懒加载、优化依赖。

  • 构建层:分包、压缩、Tree Shaking、图片优化。

  • 运行时:懒加载 + 虚拟滚动 + hooks 优化。

  • 运维层:CDN、缓存策略、HTTP/2。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/949024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年港口动态沙盘模型厂家 权威推荐榜单:物流教学实训沙盘/港口演示实训模型/智能港口实训模型源头厂家精选

港口动态沙盘模型作为现代物流教育与港口规划的重要教具,近年来市场需求持续增长。行业数据显示,2024年中国港航教育装备市场规模已达12.8亿元,其中智能实训模型年增长率稳定在15%-18%之间。为帮助院校及企业精准选…

2025年电力机动绞磨厂家权威推荐榜单:快速机动绞磨/柴油机动绞磨机/机动绞磨机源头厂家精选

在电力、通信及基建工程领域,机动绞磨机作为牵引、组塔、立杆的核心设备,其性能可靠性直接影响工程效率与安全。根据行业数据,2025年国内机动绞磨市场规模预计增长12% 以上,其中智能化、低能耗、高适应性设备需求占…

数据库国产化替换后,Oracle还有没有学习的价值?

我国数据库国产化替代是国家推动信息技术自主可控、保障数据安全的核心战略,近年来取得显著进展,拿Oracle数据库来说,它在国的市场份额已经大幅下降,但是一些人已经注意到,其下降的趋势已经缓慢下来,国内依然还有…

怎么自己架设魔域服务器?魔域服务器架设教程

新手小白注意啦,如果你是第一次接触魔域(从来没玩过),需要先下载《魔域》官方客户端魔域端游搭建之前需准备: 1)一台Windows 操作系统服务器 2)魔域商业版本(包括数据库和补丁) 3)服务端引擎、网关、登录器生…

为什么Android游戏画面在30帧运行时有抖动现象

1)为什么Android游戏画面在30帧运行时有抖动现象2)团结引擎VS Skinning开启ENABLE_VS_SKINNING_MORE_BONES后,性能反而下降这是第450篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等…

RT-DETR 百度目标检测 cvpr2023 - MKT

RT-DETR 百度目标检测 cvpr2023 https://github.com/lyuwenyu/RT-DETR https://docs.ultralytics.com/zh/models/rtdetr/#pre-trained-models

Nginx中正确配置SSE(Server-Sent Events)服务

让我们深入探讨如何在Nginx中正确配置SSE(Server-Sent Events)服务。SSE是一种基于HTTP的服务器推送技术,需要特殊的Nginx配置来维持长连接。 核心配置要点代理缓冲与分块传输 location /sse-endpoint { proxy_pass…

电子烟上的关键芯片推荐(NFC、MCU、电源管理)

随着电子烟市场的快速发展,消费者对产品的智能化、安全性和用户体验提出了更高要求。本文将围绕NFC、MCU和电源管理三大核心器件探讨其在电子烟中的应用方案: 一、NFC技术在电子烟中的应用 NFC(近场通信)技术为电子…

应用程序无法正常启动(0xc0000142)怎么办?3个方法彻底解决【2025最新图文教程】

当你打开软件或游戏时,突然弹出“应用程序无法正常启动(0xc0000142)”的错误提示,是不是一脸懵? 本文将详细介绍该问题的常见原因,并提供三种行之有效的解决方法:使用一键修复工具自动处理系统错误手动更新 Visua…

基于二维熵阈值分割与遗传算法结合的图像分割

一、算法原理框架 1. 二维熵阈值分割基础\(p_{ij}\):灰度值i与邻域均值j的联合概率 \(w_0,w_b\):目标和背景的累积概率 目标:最大化总熵\(H=H_o+H_b\)2. 遗传算法优化流程 graph TD A[初始化种群] --> B[适应度计…

10进制转2进制

string decimalToBinary2(int n) { if (n == 0) return "0"; string binary = ""; while (n > 0) {binary = to_string(n % 2) + binary;n /= 2; } return binary;} 注意binary = to_string(n …

沙姆镜头的工作原理及使用技巧

沙姆镜头的工作原理基于沙姆定律,即当镜头平面、成像平面和被摄物体平面相交于一条直线时,可以扩展焦平面,使不在同一平面的物体也能清晰成像。 在实际应用中,沙姆镜头通过其倾斜功能,可以根据被摄物体的角度调整…

全域感知,主动预警:视频汇聚平台EasyCVR打造水库大坝智慧安防视频监控智能分析方案

一、项目背景 水库安全度汛是全国防汛抗洪工作的重点,水库监控系统对保障水库安全、及时排险意义重大。多数水库站点分散、位置偏,地形复杂,与监控中心相隔较远。 传统有线监控系统成本高、工期长,遇山河等阻碍时布…

list列表 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

全域互联,统一管控:EasyCVR构建多区域视频监控“一网统管”新范式

方案背景 在连锁店、企业分支机构、库房、工厂等多元化场景的视频监控项目中,设备品牌众多、型号繁杂,再加上现场网络环境的复杂性,使得跨区域视频联网面临诸多挑战。为有效解决视频监控接入兼容、上云联网等问题,…

魔改frida

魔改frida 魔改fridagit clone https://github.com/frida/frida-core.git安装子分支git submodule update --init --recursive安装ndk,设置环境变量 https://github.com/android/ndk/wiki 下载25版本 设置环境变量v…

云原生周刊:在 Kubernetes 上运行机器学习

云原生热点 KGateway v2.1:面向 AI 场景的高可用网关全新升级 KGateway 是一个面向云原生和 AI 场景的高性能网关,支持多租户、统一接入、智能路由与推理服务集成,兼容 Kubernetes Gateway API 标准。 在最新的 v2.…

ts相关

1、常用类型工具

从模型到智能体——OpenCSG 打造 AI 落地新范式

一、AI 焦虑的现实:技术太快、落地太慢 AI 的世界正在以指数级速度演进。 企业追逐最新模型,却发现落地难度越来越大——模型更新太快、算力成本太高、应用落地太慢。 OpenCSG 的观点是:企业不需要更多的模型,而需…

CF589H 题解

很好的题。但是 CF 主站上看不了。 首先需要观察到一个性质:对于一个包含 \(k\) 个关键点的连通块,一定可以凑出恰好 \(\lfloor\frac{k}{2}\rfloor\) 对路线。 首先这个东西显然是答案上界。然后考虑证明一定能够满足…