详解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随机生成信用卡卡号的方法
Apr 07 Javascript
jquery控制页面部分刷新的方法
Jun 24 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
Aug 21 Javascript
jQuery实现向下滑出的二级菜单效果实例
Aug 22 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
Apr 29 Javascript
jQuery获取剪贴板内容的方法
Jun 16 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
Feb 09 Javascript
Angularjs实现下拉框联动的示例代码
Aug 22 Javascript
checkbox:click事件触发span元素内容改变的方法
Sep 11 Javascript
vue中axios实现数据交互与跨域问题
May 12 Javascript
vue实现PC端录音功能的实例代码
Jun 05 Javascript
通过实例解析vuejs如何实现调试代码
Jul 16 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 一个页面执行时间类代码
2010/03/05 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
为JavaScript提供睡眠功能(sleep) 自编译JS引擎
2010/08/16 Javascript
利用jQuery操作对象数组的实现代码
2011/04/27 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
js计算德州扑克牌面值的方法
2015/03/04 Javascript
微信小程序(应用号)简单实例应用及实例详解
2016/09/26 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
2018/02/11 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
js实现表单项的全选、反选及删除操作示例
2020/06/05 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
在Python中调用ggplot的三种方法
2015/04/08 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
2018/12/26 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
python简单利用字典破解zip文件口令
2020/09/07 Python
css3动画过渡实现鼠标跟随导航效果
2018/02/08 HTML / CSS
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
The North Face官方旗舰店:美国著名户外品牌
2020/09/28 全球购物
劳资员岗位职责
2013/11/11 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
幼儿园小班家长寄语
2014/04/02 职场文书
库房保管员岗位职责
2014/04/07 职场文书
忠诚教育心得体会
2014/09/03 职场文书
2015年酒店销售部工作总结
2015/07/24 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
如何有效防止sql注入的方法
2021/05/25 SQL Server
海弦WR-800F
2022/04/05 无线电
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang