详解webpack 热更新优化


Posted in Javascript onSeptember 13, 2018

前言

随着项目的界面越来越多,webpack的热更新越来越慢,有时会达到5,7s之久,这对于开发效率影响是非常巨大的。

分析过程

于是今天就针对这个分析了一下热更新慢的原因,步骤如下

首先先在package中的启动命令加上

--progress --watch --colors --profile

先解释一下这几个参数的含义

  • --progress 构建进度
  • --watch 实时监测
  • --profile 编译过程中的步骤耗时时间

加上了这几个参数,重启项目,就可以开始观察耗时时间了,修改了某个文件之后,查看控制台,如下

详解webpack 热更新优化

图中红色部分就是耗时最长的地方了,好了,发现了耗时时间长的地方了,经过百度搜索,发现也有个问题和我这个非常类似,他的原因是因为使用了uglifyJsPlugin插件,这么一想,我的项目中的webpack配置中也用到了这个插件,于是把这个插件移到生产环境中使用,修改之后重启项目,修改某个文件之后,查看控制台,如下

详解webpack 热更新优化

效果非常惊人,总的耗时已经在1,2s之内了,效率提高了不少!!如果也有这种烦恼的小伙伴也可以试一下哦

另一种解决方案

这种方案的思路为,开发环境中,每人负责的都是一部分模块或者组件,所以热更新可以只编译自己当前需要的页面,而没必要把所有的页面全部编译。创建一个 selfConfig.js 设置需要保存的页面,然后在 webpack 配置中,配置,只属于需要的页面去编译热更新。加快开发环境中的编译速度。

// selfConfig.js
module.exports = [
'imScence',
'mLogin'
];
// webpack.base.conf.js 
// 部分关键代码
const selfConfig = require("./selfConfig");

for (let moduleName of modules) {
if (selfConfig.length === 0) {
devEntries[moduleName] = path.join(resolve('src'), 'modules', moduleName, 'main.js');
} else {
if (selfConfig.includes(moduleName)) {
devEntries[moduleName] = path.join(resolve('src'), 'modules', moduleName, 'main.js');
}
}
buildEntries[moduleName] = path.join(resolve('src'), 'modules', moduleName, 'main.js');
}

以上事例设置完成后,只会热更新两个页面,但是这种方案的弊端是,其他页面本地环境将是白屏打不开(因为压根没编译),所以这种方案还是根据适合自己的场景使用。

注意: 每次修改 selfConfig.js 需要重起 webpack 服务。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript[js]获取url参数的代码
Oct 17 Javascript
数组方法解决JS字符串连接性能问题有争议
Jan 12 Javascript
select标记美化--JS式插件、后期加载
Apr 01 Javascript
简单的代码实现jquery定时器
Nov 17 Javascript
KnockoutJs快速入门教程
May 16 Javascript
改变checkbox默认选中状态及取值的实现代码
May 26 Javascript
Vue.js组件高级特性实例详解
Dec 24 Javascript
JS通过ajax + 多列布局 + 自动加载实现瀑布流效果
May 30 Javascript
使用vue cli4.x搭建vue项目的过程详解
May 08 Javascript
vscode中Vue别名路径提示的实现
Jul 31 Javascript
js实现三角形粒子运动
Sep 22 Javascript
Nuxt.js 静态资源和打包的操作
Nov 06 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
Sep 13 #Javascript
Angularjs之ngModel中的值验证绑定方法
Sep 13 #Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
Sep 13 #Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
Sep 13 #Javascript
mpvue中使用flyjs全局拦截的实现代码
Sep 13 #Javascript
AngularJS修改model值时,显示内容不变的实例
Sep 13 #Javascript
在vue中使用vue-echarts-v3的实例代码
Sep 13 #Javascript
You might like
php 验证码制作(网树注释思想)
2009/07/20 PHP
php实现自动获取生成文章主题关键词功能的深入分析
2013/06/03 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
PHP实现类似题库抽题效果
2018/08/16 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
JS Loading功能的简单实现
2013/11/29 Javascript
深入理解Javascript中this的作用域
2014/08/12 Javascript
再JavaScript的jQuery库中编写动画效果的指南
2015/08/13 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
JavaScript操作class和style样式代码详解
2016/02/13 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
js canvas实现星空连线背景特效
2019/11/01 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
2015/04/01 Python
python常见的格式化输出小结
2016/12/15 Python
Python动态导入模块和反射机制详解
2020/02/18 Python
python实现学生管理系统开发
2020/07/24 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
2020/10/09 Python
python 使用openpyxl读取excel数据
2021/02/18 Python
基于CSS3实现立方体自转效果
2016/03/01 HTML / CSS
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
医学检验专业大学生求职信
2013/11/18 职场文书
解除劳动合同证明书
2014/09/26 职场文书
作风转变年心得体会
2014/10/22 职场文书
综合测评自我评价
2015/03/06 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书
公司催款律师函
2015/05/27 职场文书
高三毕业感言
2015/07/30 职场文书
婚礼答谢词范文
2015/09/29 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书