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

react项目做的h5页面加载缓慢优化(3s优化到0.6s)

打包到生产环境时去掉SOURCEMAP
禁用生成 Source Map 是一种权衡,可以根据项目的实际需求和优化目标来决定是否禁用。如果您对调试需求不是特别强烈,可以考虑在生产构建中禁用 Source Map 以获取更好的性能。但如果需要保留调试能力,可以在生产构建中保留生成 Source Map
“buildProd”: “BUILD_ENV=prod GENERATE_SOURCEMAP=false react-app-rewired build”
配置webpack进行相关优化

  1. 代码压缩,去掉log日志
config.optimization.minimizer.push(new TerserPlugin({terserOptions: {compress: {drop_console: true,},output: {comments: false,},},}));
  1. 根据git版本生成输出目录
const gitVersion = child_process.execSync('git rev-parse --short HEAD').toString().trim();const prePath = `${gitVersion}`const staticPath = `prePath`// 更改输出目录config.output.path = path.resolve(__dirname, `build/`);// js chunk assetconfig.output.filename = `${prePath}/js/[name].[contenthash:8].js`;config.output.chunkFilename = `${prePath}/js/[name].[contenthash:8].chunk.js`;config.output.assetModuleFilename = `${prePath}/media/[name].[hash][ext]`;
  1. CDN加速,开发环境和生产环境分开
if (process.env.BUILD_ENV == "prod") {// 更改公共路径config.output.publicPath = `https://didbrowser-prod.oss-cn-chengdu.aliyuncs.com/`}if (process.env.BUILD_ENV == "dev") {config.output.publicPath = `https://didbrowser-dev.oss-cn-chengdu.aliyuncs.com/`}
  1. 对第三方插件大模块chunks 进行代码分割
config.optimization = {...config.optimization,splitChunks: {cacheGroups: {echarts: {test: /[\\/]node_modules[\\/]echarts[\\/]/, // 匹配 ECharts 模块name: 'echarts', // 生成的文件名chunks: 'all', // 对所有的 chunks 进行代码分割}},},};
  1. 更改 CSS 的输出路径
const miniCssExtractPlugin = config.plugins.find(plugin => plugin instanceof MiniCssExtractPlugin);if (miniCssExtractPlugin) {miniCssExtractPlugin.options.filename = `${prePath}/css/[name].[contenthash:8].css`;miniCssExtractPlugin.options.chunkFilename = `${prePath}/css/[name].[contenthash:8].chunk.css`;}
http://www.lryc.cn/news/123756.html

相关文章:

  • 如何修复损坏的DOC和DOCX格式Word文件?
  • UI设计师个人工作感悟5篇
  • Java堆、栈、内存的知识
  • tp6 RabbitMQ
  • java Spring Boot yml多环境拆分文件管理优化
  • 【设计模式——学习笔记】23种设计模式——状态模式State(原理讲解+应用场景介绍+案例介绍+Java代码实现)
  • 【LeetCode每日一题】——41.缺失的第一个正数
  • typedef函数代码段解释以及部分Windows下的系统函数
  • Typora常用手册
  • 互联网发展历程:从网线不够长到中继器的引入
  • 【Java】异常处理 之 使用SLF4J 和 Logback
  • C++11并发与多线程笔记 (1)
  • 07_Hudi案例实战、Flink CDC 实时数据采集、Presto、FineBI 报表可视化等
  • ceph相关概念和部署
  • Android Jetpack Compose 中的分页与缓存展示
  • 无名管道 / 有名管道(FIFO)
  • Three.js纹理贴图
  • 1+X Web前端开发职业技能等级证书建设方案
  • Rx.NET in Action 第二章学习笔记
  • 【软件工程 | 模块耦合】什么是模块耦合及分类
  • OCT介绍和分类
  • 07-2_Qt 5.9 C++开发指南_二进制文件读写(stm和dat格式)
  • SpringBoot复习:(41)配置文件中配置的server开头的属性是怎么配置到Servlet容器中起作用的?
  • 深入解读网络协议:原理与重要概念
  • O型圈不同类型的应用指南
  • Mysql 搭建MHA高可用架构,实现自动failover,完成主从切换
  • Python:列表、元组、集合、字典,数据类型之间的 5 个差异
  • redis学习笔记(四)
  • -L和-rpath-link和-rpath
  • chatGPT小白快速入门培训课程-001