一、开发阶段优化

1. 热更新加速(HMR)
// vue.config.js
module.exports = {devServer: {hot: true,  // 开启热更新injectClient: true, // 自动注入HMR客户端watchOptions: {ignored: /node_modules/,  // 忽略node_modules变化aggregateTimeout: 300      // 防抖延迟}}
}

效果:修改组件代码时,仅更新当前组件而非整个页面。

2. 减少Loader处理范围
// 针对babel-loader优化
{test: /\.js$/,include: [ // 明确处理范围path.resolve(__dirname, 'src'),path.resolve(__dirname, 'node_modules/vue-awesome')],use: ['babel-loader?cacheDirectory'] // 启用缓存
}

二、构建速度优化

1. 多线程并行处理
const ThreadLoader = require('thread-loader');// 预热线程池
ThreadLoader.warmup({workers: 2,workerParallelJobs: 50
}, ['babel-loader']);// 配置
{test: /\.js$/,use: [{loader: 'thread-loader',options: { workers: 2 }},'babel-loader']
}
2. 缓存策略
// 持久化缓存(Webpack5+)
cache: {type: 'filesystem',buildDependencies: {config: [__filename] // 配置文件变化时缓存失效}
}

三、产物体积优化

1. Tree Shaking优化
// package.json 标记副作用文件
{"sideEffects": ["*.css","*.vue"  // Vue单文件组件默认有副作用]
}// 确保使用ES模块导入
import { Button } from 'element-ui'  // ✅ 按需加载
import ElementUI from 'element-ui'   // ❌ 全量引入
2. 按需加载第三方库
// 以Element-UI为例
const components = ['ElButton', 'ElInput'];
const plugins = ['ElLoading'];plugins.forEach(plugin => {app.use(require(`element-ui/lib/${plugin.toLowerCase()}`));
});
3. 图片压缩(Webpack5+)
{test: /\.(png|jpe?g|webp)$/,type: 'asset',parser: {dataUrlCondition: {maxSize: 8 * 1024 // 8KB以下转base64}},use: [{loader: 'image-webpack-loader',options: {mozjpeg: { quality: 65 },webp: { quality: 75 }}}]
}

四、Vue专项优化

1. 模板预编译
// vue-loader配置
{loader: 'vue-loader',options: {compilerOptions: {whitespace: 'condense'  // 压缩模板空白字符},reactivityTransform: true // 启用响应性语法糖}
}
2. 异步组件分割
// 路由配置示例
const UserDetails = () => import(/* webpackChunkName: "user" */ './views/UserDetails.vue'
);
3. 运行时版本构建
// vue.config.js
module.exports = {configureWebpack: {resolve: {alias: {'vue$': 'vue/dist/vue.runtime.esm-bundler.js' // 使用无编译器版本}}}
}

效果:减少约30%的Vue核心库体积。


五、高级优化方案

1. 模块联邦(微前端场景)
// 模块提供方配置
new ModuleFederationPlugin({name: 'app1',filename: 'remoteEntry.js',exposes: {'./Button': './src/components/Button.vue'}
});// 消费方配置
remotes: {app1: 'app1@http://localhost:3001/remoteEntry.js'
}
2. Gzip压缩(需配合Nginx)
const CompressionPlugin = require('compression-webpack-plugin');new CompressionPlugin({test: /\.(js|css|html|svg)$/,threshold: 10240, // 10KB以上文件压缩algorithm: 'gzip'
})

优化效果对比

优化项构建时间产物体积首屏加载
基础配置45s4.2MB2.8s
多线程+缓存22s (-50%)--
Tree Shaking+按需加载-2.1MB (-50%)1.5s
Gzip压缩-1.3MB (-70%)0.9s

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

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

相关文章

BTC官网关注巨鲸12亿美元平仓,XBIT去中心化交易平台表现稳定

在全球加密货币市场波动加剧的背景下,2025年5月25日传出重磅消息。据今日最新国际报道,知名巨鲸James Wynn完全平仓价值12亿美元的BTC多头仓位,整体盈利约845万美元,此举引发市场广泛关注。与此同时,收益型稳定币市场迎…

在WPF中添加动画背景

在WPF中添加动画背景 在WPF中创建动画背景可以大大增强应用程序的视觉效果。以下是几种实现动画背景的方法&#xff1a; 方法1&#xff1a;使用动画ImageBrush&#xff08;图片轮播&#xff09; <Window x:Class"AnimatedBackground.MainWindow"xmlns"htt…

单点击登录sso实现

一、单点登录&#xff08;SSO&#xff09;是什么&#xff1f; 核心定义 单点登录&#xff08;Single Sign-On&#xff0c;SSO&#xff09;是一种身份认证解决方案&#xff0c;允许用户通过一次登录访问多个相互信任的应用系统。其核心逻辑是统一认证中心与分布式会话管理&…

JavaWebsocket-demo

Websocket客户端 pom依赖 <dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.4.0</version></dependency>客户端代码片段 Component Slf4j public class PositionAlarmL…

Java Collection(集合) 接口

Date: 2025-05-21 20:21:32 author: lijianzhan Java 集合框架提供了一组接口和类&#xff0c;以实现各种数据结构和算法。 以下是关于 Java 集合的核心内容说明&#xff1a; /*** Java Collection Framework 说明&#xff1a;** 在 Java 中&#xff0c;集合&#xff08;Collec…

让MySQL更快:EXPLAIN语句详尽解析

前言 在数据库性能调优中&#xff0c;SQL 查询的执行效率是影响系统整体性能的关键因素之一。MySQL 提供了强大的工具——EXPLAIN 语句&#xff0c;帮助开发者和数据库管理员深入分析查询的执行计划&#xff0c;从而发现潜在的性能瓶颈并进行针对性优化。 EXPLAIN 语句能够模…

Java基础 Day20

一、HashSet 集合类 1、简介 HashSet 集合底层采取哈希表存储数据 底层是HashMap 不能使存取有序 JDK8之前的哈希表是数组和链表&#xff0c;头插法 JDK8之后的哈希表是数组、链表和红黑树&#xff0c;尾插法 2、存储元素 &#xff08;1&#xff09;如果要保证元素的唯…

2505C++,32位转64位

原文 假设有个想要将一个32位值传递给一个带64位值的函数的函数.你不关心高32位的内容,因为该值是传递给回调函数的直通值,回调函数会把它截断为32位值. 因此,你都担心编译器一般生成的将32位值扩展到64位值的那条指令的性能影响. 我怀疑这条指令不是程序中的性能瓶颈. 我想出…

光伏电站及时巡检:守护清洁能源的“生命线”

在“双碳”目标驱动下&#xff0c;光伏电站作为清洁能源的主力军&#xff0c;正以年均20%以上的装机增速重塑全球能源格局。然而&#xff0c;这些遍布荒漠、屋顶的“光伏矩阵”并非一劳永逸的能源提款机&#xff0c;其稳定运行高度依赖精细化的巡检维护。山东枣庄触电事故、衢州…

C++初阶-list的使用2

目录 1.std::list::splice的使用 2.std::list::remove和std::list::remove_if的使用 2.1remove_if函数的简单介绍 基本用法 函数原型 使用函数对象作为谓词 使用普通函数作为谓词 注意事项 复杂对象示例 2.2remove与remove_if的简单使用 3.std::list::unique的使用 …

OpenHarmony平台驱动使用(一),ADC

OpenHarmony平台驱动使用&#xff08;一&#xff09; ADC 概述 功能简介 ADC&#xff08;Analog to Digital Converter&#xff09;&#xff0c;即模拟-数字转换器&#xff0c;可将模拟信号转换成对应的数字信号&#xff0c;便于存储与计算等操作。除电源线和地线之外&#…

CSS【详解】弹性布局 flex

适用场景 一维&#xff08;行或列&#xff09;布局 基本概念 包裹所有被布局元素的父元素为容器 所有被布局的元素为项目 项目的排列方向&#xff08;垂直/水平&#xff09;为主轴 与主轴垂直的方向交交叉轴 容器上启用 flex 布局 将容器的 display 样式设置为 flex 或 i…

基于MATLAB实现传统谱减法以及两种改进的谱减法(增益函数谱减法、多带谱减法)的语音增强

基于MATLAB实现传统谱减法以及两种改进的谱减法&#xff08;增益函数谱减法、多带谱减法&#xff09;的语音增强代码示例&#xff1a; 传统谱减法 function enhanced traditional_spectral_subtraction(noisy, fs, wlen, inc, NIS, a, b)% 参数说明&#xff1a;% noisy - 带…

symbol【ES6】

你一闭眼世界就黑了&#xff0c;你不是主角是什么&#xff1f; 目录 什么是Symbol&#xff1f;‌Symbol特点‌&#xff1a;创建方法&#xff1a;注意点&#xff1a;不能进行运算&#xff1a;显示调用toString() --没有意义隐式转换boolean 如果属性名冲突了怎么办&#xff1f;o…

LeetCode 649. Dota2 参议院 java题解

https://leetcode.cn/problems/dota2-senate/description/ 贪心。不会写。 class Solution {public String predictPartyVictory(String senate) {boolean rtrue,dtrue;int flag0;//flag>0,d前面有r;flag<0,r前面有dchar[] senatessenate.toCharArray();//每一轮while(r…

机器学习第二十二讲:感知机 → 模仿大脑神经元的开关系统

机器学习第二十二讲&#xff1a;感知机 → 模仿大脑神经元的开关系统 资料取自《零基础学机器学习》。 查看总目录&#xff1a;学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章&#xff1a;DeepSeek R1本地与线上满血版部署&#xff1a;超详细手把手指南 感知机详解…

maven快速上手

之前我们项目如果要用到其他额外的jar包&#xff0c;需要自己去官网下载并且导入。但是有maven后&#xff0c;直接在maven的pom.xml文件里用代码配置即可&#xff0c;配置好后maven会自动帮我们联网下载并且会自动导入该jar包 在右边的maven中&#xff0c;我们可以看到下载安装…

科学养生指南:解锁健康生活密码

健康是人生最宝贵的财富&#xff0c;在快节奏的现代生活中&#xff0c;科学养生成为保持良好状态的关键。遵循现代医学与营养学的研究成果&#xff0c;无需依赖传统中医理论&#xff0c;我们也能找到适合自己的养生之道。​ 均衡饮食是健康的基石。现代营养学强调 “食物多样&…

Qt状态机QStateMachine

QStateMachine QState 提供了一种强大且灵活的方式来表示状态机中的状态&#xff0c;通过与状态机类(QStateMachine)和转换类(QSignalTransition&#xff0c; QEventTransition)结合&#xff0c;可以实现复杂的状态逻辑和用户交互。合理使用嵌套状态机、信号转换、动作与动画、…

C++八股 —— 原子操作

文章目录 1. 什么是原子操作2. 原子操作的特点3. 原子操作的底层原理4. 内存序内存屏障 5. 原子操作和互斥锁的对比6. 常用的原子操作7. 相关问题讨论 参考&#xff1a; C atomic 原子操作_c 原子操作-CSDN博客DeepSeek 1. 什么是原子操作 原子操作&#xff08;Atomic Opera…