详解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 相关文章推荐
Jquery获取复选框被选中值的简单方法
Jul 04 Javascript
JavaScript导出Excel实例详解
Nov 25 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
Sep 24 Javascript
使用JavaScript解决网页图片拉伸问题(推荐)
Nov 25 Javascript
Vue2.0 slot分发内容与props验证的方法
Dec 12 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
Aug 13 Javascript
js实现简单模态框实例
Nov 16 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
May 22 Javascript
vue中datepicker的使用教程实例代码详解
Jul 08 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
Dec 01 Javascript
vue实现图片上传功能
May 28 Javascript
详细分析JavaScript中的深浅拷贝
Sep 17 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
使用VisualStudio开发php的图文设置方法
2010/08/21 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
php实现查询百度google收录情况(示例代码)
2013/08/02 PHP
php使用指定字符列表生成随机字符串的方法
2015/04/18 PHP
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
2016/06/28 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
Bootstrap Navbar Component实现响应式导航
2016/10/08 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
2017/01/13 Javascript
jQuery回调方法使用示例
2017/06/26 jQuery
基于node打包可执行文件工具_Pkg使用心得分享
2018/01/24 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
解决Nuxt使用axios跨域问题
2020/07/06 Javascript
vue编写简单的购物车功能
2021/01/08 Vue.js
python调用新浪微博API项目实践
2014/07/28 Python
python re模块findall()函数实例解析
2018/01/19 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
2018/07/26 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
pytorch实现mnist分类的示例讲解
2020/01/10 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
Canon佳能美国官方商店:购买数码相机、数码单反相机、镜头和打印机
2016/11/15 全球购物
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
美国最好的钓鱼、狩猎和划船装备商店:Bass Pro Shops
2018/12/02 全球购物
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
小学生红领巾广播稿
2014/01/21 职场文书
Pycharm 如何设置HTML文件自动补全代码或标签
2021/05/21 Python
详细总结Python常见的安全问题
2021/05/21 Python
python如何正确使用yield
2021/05/21 Python
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS
Golang 链表的学习和使用
2022/04/19 Golang