详解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 函数调用规则
Sep 14 Javascript
Mootools 1.2教程 滚动条(Slider)
Sep 15 Javascript
JavaScript prototype属性使用说明
May 13 Javascript
JavaScript定义变量和变量优先级问题探讨
Oct 11 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
Feb 04 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
Dec 26 Javascript
微信小程序图片宽100%显示并且不变形
Jun 21 Javascript
Vue中rem与postcss-pxtorem的应用详解
Nov 20 Javascript
微信小程序音乐播放器开发
Nov 20 Javascript
如何使用Jquery动态生成二级选项列表
Feb 06 jQuery
vue移动端的左右滑动事件详解
Jun 17 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
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
DC《神奇女侠2》因疫情推迟上映 温子仁新恐怖片《恶性》撤档
2020/04/09 欧美动漫
解析获取优酷视频真实下载地址的PHP源代码
2013/06/26 PHP
分享php多功能图片处理类
2016/05/15 PHP
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
2013/01/11 Javascript
详解jquery中$.ajax方法提交表单
2014/11/03 Javascript
JavaScript修改浏览器tab标题小技巧
2015/01/06 Javascript
浅谈Javascript中Object与Function对象
2015/09/26 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
总结Node.js中的一些错误类型
2016/08/15 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
Vue ElementUI之Form表单验证遇到的问题
2017/08/21 Javascript
微信小程序实现订单倒计时
2020/11/01 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
Postman内建变量常用方法实例解析
2020/07/28 Javascript
[01:23:35]Ti4主赛事胜者组 DK vs EG 1
2014/07/19 DOTA
[07:26]2015国际邀请赛第二日TOP10集锦
2015/08/06 DOTA
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
python隐藏类中属性的3种实现方法
2019/12/19 Python
Python 2.6.6升级到Python2.7.15的详细步骤
2020/12/14 Python
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
软件测试英文面试题
2012/10/14 面试题
创意活动策划书
2014/01/15 职场文书
卫生院艾滋病宣传活动小结
2014/07/09 职场文书
学生安全责任书模板
2014/07/25 职场文书
2016党员干部廉政准则学习心得体会
2016/01/20 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS