详解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 相关文章推荐
SOSO地图API使用(一)在地图上画圆实现思路与代码
Jan 15 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
May 27 Javascript
深入理解javascript变量声明
Nov 20 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
Mar 08 Javascript
简单讲解jQuery中的子元素过滤选择器
Apr 18 Javascript
D3.js实现直方图的方法详解
Sep 25 Javascript
基于AngularJS的拖拽文件上传的实例代码
Jul 15 Javascript
在vue 中使用 less的教程详解
Sep 26 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
Apr 07 Javascript
使用express来代理服务的方法
Jun 21 Javascript
jQuery实现checkbox全选、反选及删除等操作的方法详解
Aug 02 jQuery
Vue实现页面添加水印功能
Nov 09 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 include类文件超时问题处理
2015/02/06 PHP
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
js控制浏览器全屏示例代码
2014/02/20 Javascript
基于jQuery实现表单提交验证
2014/11/24 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
Angularjs手动解析表达式($parse)
2016/10/12 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
简单实现jQuery手风琴效果
2017/08/18 jQuery
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
微信小程序自定义可滑动日历界面
2018/12/28 Javascript
纯javascript实现选择框的全选与反选功能
2019/04/08 Javascript
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
python处理cookie详解
2014/02/07 Python
使用Python编写vim插件的简单示例
2015/04/17 Python
Python中用altzone()方法处理时区的教程
2015/05/22 Python
python如何去除字符串中不想要的字符
2020/07/05 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
python FTP批量下载/删除/上传实例
2019/12/22 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
2020/05/10 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
影视动画专业个人的自我评价
2013/12/31 职场文书
爱岗敬业演讲稿范文
2014/01/14 职场文书
简历里的自我评价范文
2014/02/24 职场文书
学校食品安全实施方案
2014/06/14 职场文书
商场促销活动总结
2014/07/10 职场文书
初三语文教学计划
2015/01/22 职场文书
材料员岗位职责范本
2015/04/11 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
幼儿园教师培训心得体会
2016/01/21 职场文书
高中化学教学反思
2016/02/22 职场文书
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python