react项目做的h5页面加载缓慢优化(3s优化到0.6s)
打包到生产环境时去掉SOURCEMAP
禁用生成 Source Map 是一种权衡,可以根据项目的实际需求和优化目标来决定是否禁用。如果您对调试需求不是特别强烈,可以考虑在生产构建中禁用 Source Map 以获取更好的性能。但如果需要保留调试能力,可以在生产构建中保留生成 Source Map
“buildProd”: “BUILD_ENV=prod GENERATE_SOURCEMAP=false react-app-rewired build”
配置webpack进行相关优化
- 代码压缩,去掉log日志
config.optimization.minimizer.push(new TerserPlugin({terserOptions: {compress: {drop_console: true,},output: {comments: false,},},}));
- 根据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]`;
- 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/`}
- 对第三方插件大模块chunks 进行代码分割
config.optimization = {...config.optimization,splitChunks: {cacheGroups: {echarts: {test: /[\\/]node_modules[\\/]echarts[\\/]/, // 匹配 ECharts 模块name: 'echarts', // 生成的文件名chunks: 'all', // 对所有的 chunks 进行代码分割}},},};
- 更改 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`;}
相关文章:
react项目做的h5页面加载缓慢优化(3s优化到0.6s)
打包到生产环境时去掉SOURCEMAP 禁用生成 Source Map 是一种权衡,可以根据项目的实际需求和优化目标来决定是否禁用。如果您对调试需求不是特别强烈,可以考虑在生产构建中禁用 Source Map 以获取更好的性能。但如果需要保留调试能力,可以在生…...
如何修复损坏的DOC和DOCX格式Word文件?
我们日常办公中,经常用到Word文档。但是有时会遇到word文件损坏、无法打开的情况。这时该怎么办?接着往下看,小编在这里就给大家带来最简单的Word文件修复方法! 很多时候DOC和DOCX Word文件会无缘无故的损坏无法打开,一…...
UI设计师个人工作感悟5篇
UI设计师个人工作感悟一 工作一年了,结合我自身谈谈UI设计的重要性。现在主流的论坛建站程序有两种 Phpwind 和Discuz(Phpwind被阿里巴巴收购 Discuz被腾讯收购这两个论坛程序都是开源免费的),利用这两种程序我都分别建立过论坛,我第一次用的…...
Java堆、栈、内存的知识
在JAVA中,有六个不同的地方可以存储数据: 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆&…...
tp6 RabbitMQ
1、composer 安装 AMQP 扩展 composer require php-amqplib/php-amqplib 2、RabbitMQ 配置 在 config 目录下创建 rabbitmq.php 文件 <?php return [host>,port>5672,user>,password>,vhost>,exchange_name > ,queue_name > ,route_key > ,cons…...
java Spring Boot yml多环境拆分文件管理优化
上文 java Spring Boot yml多环境配置 我们讲了多环境开发 但这种东西都放在一起 还是非常容易暴露信息的 并且对维护来讲 也不是非常的友好 这里 我们在resources下创建三个文件 分别叫 application-pro.yml application-dev.yml application-test.yml 我们直接将三个环境 转…...
【设计模式——学习笔记】23种设计模式——状态模式State(原理讲解+应用场景介绍+案例介绍+Java代码实现)
文章目录 案例引入介绍基本介绍登场角色应用场景 案例实现案例一类图实现 案例二:借贷平台源码剖析传统方式实现分析状态修改流程类图实现 案例三:金库警报系统系统的运行逻辑伪代码传统实现方式使用状态模式 类图实现分析问题问题一问题二 总结文章说明…...
【LeetCode每日一题】——41.缺失的第一个正数
文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 哈希表 二【题目难度】 困难 三【题目编号】 41.缺失的第一个正数 四【题目描述】 给你一个…...
typedef函数代码段解释以及部分Windows下的系统函数
文章目录 1、typedef int (WINAPI* LPSDOLInitialize)(const SDOLAppInfo* pAppInfo)2、typedef int (WINAPI* LPSDOLGetModule)(REFIID riid, void** intf)3、typedef int (WINAPI* LPSDOLTerminal)();4、GetProcAddress运行时获取一个动态链接库(DLL)中…...
Typora常用手册
常用快捷键 加粗: Ctrl B 标题: Ctrl H 插入链接: Ctrl K 插入代码: Ctrl Shift C – 无法执行 行内代码: Ctrl Shift K 插入图片: Ctrl Shift I 无序列表:Ctrl Shift L – 无法执行…...
互联网发展历程:从网线不够长到中继器的引入
互联网,这个如今贯穿我们生活的无所不在的网络,其发展历程充满了无数的创新和变革。有一项看似不太起眼的技术却在互联网的发展中发挥着至关重要的作用,那就是中继器。本文将带您深入了解互联网的发展历程,探讨在网线不够长的情况…...
【Java】异常处理 之 使用SLF4J 和 Logback
使用SLF4J和Logback 前面介绍了Commons Logging 和Log4j 这一对好基友,它们一个负责充当日志 API,一个负责实现日志底层,搭配使用非常便于开发。 有的童鞋可能还听说过SLF4J和Logback。这两个东东看上去也像日志,它们又是啥&…...
C++11并发与多线程笔记 (1)
C11并发与多线程笔记(1) 1、并发、进程、线程的基本概念和综述1.1 并发1.2 可执行程序1.3 进程1.4 线程1.5 学习心得 2、并发的实现方法2.1 多进程并发2.2 多线程并发 3、C11新标准线程库 1、并发、进程、线程的基本概念和综述 1.1 并发 指在一个时间段…...
07_Hudi案例实战、Flink CDC 实时数据采集、Presto、FineBI 报表可视化等
7.第七章 Hudi案例实战 7.1 案例架构 7.2 业务数据 7.2.1 客户信息表 7.2.2 客户意向表 7.2.3 客户线索表 7.2.4 线索申诉表 7.2.5 客户访问咨询记录表 7.3 Flink CDC 实时数据采集 7.3.1 开启MySQL binlog 7.3.2 环境准备 7.3.3 实时采集数据 7.3.3.1 客户信息表 7.3.3.2 客户…...
ceph相关概念和部署
Ceph 可用于向云提供 Ceph 对象存储 平台和 Ceph 可用于提供 Ceph 块设备服务 到云平台。Ceph 可用于部署 Ceph 文件 系统。所有 Ceph 存储集群部署都从设置 每个 Ceph 节点,然后设置网络。 Ceph 存储集群需要满足以下条件:至少一个 Ceph 监控器&#x…...
Android Jetpack Compose 中的分页与缓存展示
Android Jetpack Compose 中的分页与缓存展示 在几乎任何类型的移动项目中,移动开发人员在某个时候都会处理分页数据。如果数据列表太大,无法一次从服务器检索完毕,这就是必需的。因此,我们的后端同事为我们提供了一个端点&#…...
无名管道 / 有名管道(FIFO)
根据上节所讲就可以了解到:管道其实就是实现进程间通讯IPC中的一种类型方法 基本概念(无名管道) 管道是一种最基本的IPC机制,通常指无名管道,也是UNIX系统IPC最古老的形式。管道只能作用于有血缘关系的进程之间&…...
Three.js纹理贴图
目录 Three.js入门 Three.js光源 Three.js阴影 Three.js纹理贴图 纹理是一种图像或图像数据,用于为物体的材质提供颜色、纹理、法线、位移等信息,从而实现更加逼真的渲染结果。 纹理可以应用于Three.js中的材质类型,如MeshBasicMaterial…...
1+X Web前端开发职业技能等级证书建设方案
一 、系统概述 1X Web前端开发技术是计算机类专业重要的核心课程,课程所包含的教学内容多,实践性强,并且相关技术更新快。传统的课堂讲授模式以教师为中心,学生被动式接收,难以调动学生学习的积极性和主动性。混合式教…...
Rx.NET in Action 第二章学习笔记
2 Hello, Rx 本章节涵盖的内容: 不使用Rx的工作方式向项目中添加Rx创建你的第一个Rx应用程序 Rx 的目标是协调和统筹来自社交网络、传感器、用户界面事件等不同来源的基于事件的异步计算。例如,建筑物周围的监控摄像头和移动传感器会在有人靠近建筑物时触发…...
constexpr从入门到架构级应用:掌握5大编译期元编程模式,3天重构高性能库
第一章:constexpr的本质与编译期计算范式constexpr 不是简单的“编译期可求值”标记,而是一种强制性的**编译期契约**:它要求被修饰的函数或变量必须在编译阶段完成求值,且所有操作必须处于常量表达式语境中。这一机制推动 C 从运…...
OpenClaw技能市场探秘:Qwen3.5-9B适配的十佳插件
OpenClaw技能市场探秘:Qwen3.5-9B适配的十佳插件 1. 为什么需要关注Qwen3.5-9B适配插件? 上周我在调试一个自动化周报生成流程时,发现同样的任务脚本在Qwen3.5-9B上运行时,效率比预期低了40%。经过排查才发现,我使用…...
PyTorch Autograd实战避坑指南:从梯度消失到内存泄漏,新手常踩的5个坑
PyTorch Autograd实战避坑指南:从梯度消失到内存泄漏,新手常踩的5个坑 刚接触PyTorch时,我们往往会被其简洁的API和动态计算图的特性所吸引。然而在实际项目开发中,Autograd系统的一些"隐藏规则"常常让开发者踩坑——梯…...
3个步骤轻松解决B站缓存视频无法播放问题:m4s格式转换完全指南
3个步骤轻松解决B站缓存视频无法播放问题:m4s格式转换完全指南 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾遇到这样的情…...
Tsuru平台配置管理终极指南:集中式与分布式策略详解
Tsuru平台配置管理终极指南:集中式与分布式策略详解 【免费下载链接】tsuru Open source and extensible Platform as a Service (PaaS). 项目地址: https://gitcode.com/gh_mirrors/ts/tsuru Tsuru作为一款开源且可扩展的Platform as a Service (PaaS)平台&…...
终极指南:揭秘LIEF二进制格式识别算法的实现原理 [特殊字符]
终极指南:揭秘LIEF二进制格式识别算法的实现原理 🔍 【免费下载链接】LIEF LIEF - Library to Instrument Executable Formats (C, Python, Rust) 项目地址: https://gitcode.com/gh_mirrors/li/LIEF LIEF(Library to Instrument Exec…...
IA-Lab AI 检测报告生成助手:打造检测报告自动化新标杆,全面赋能机构降本增效与合规升级
在检测认证(TIC)行业不断迈向数字化的今天,报告作为核心交付成果,其生成与审核效率直接影响机构的运营能力与市场竞争力。然而,长期以来,检测报告仍高度依赖人工编写与复核,这种模式在业务规模扩…...
Go语言GORM如何做事务_Go语言GORM事务操作教程【秒懂】
绝大多数业务写操作必须用 Transaction 而非 Begin,因其自动提交/回滚、panic 安全;Begin 仅适用于跨函数传事务或手动管理 savepoint 的底层场景。什么时候必须用 Transaction 而不是 Begin绝大多数业务写操作——比如「创建订单 扣减库存 记录日志」…...
保姆级教程:手把手教你用Dify 0.6.0源码搭建自己的AI工作流引擎(附避坑指南)
从零构建AI工作流引擎:Dify 0.6.0源码实战指南 当你第一次打开Dify的源码仓库,可能会被那些复杂的目录结构和抽象类搞得一头雾水。别担心,三周前我也和你一样,直到我亲手将这套系统跑起来并修改了第一个工作流节点。本文将带你用最…...
Android手电筒控制全攻略:从基础开关到状态监听(附完整代码)
Android手电筒控制全攻略:从基础开关到状态监听(附完整代码) 在移动应用开发中,手电筒功能看似简单,实则涉及相机硬件控制、状态同步、异常处理等多个技术要点。本文将带你深入Android手电筒控制的完整实现方案&#x…...
