解决webpack打包速度慢的解决办法汇总


Posted in Javascript onJuly 06, 2017

刚开始用webpack,谈一谈解决webpack打包慢的问题的方法

技巧1

webpack在打包的时候第一次总是会做很长的准备工作,包括加载插件之类的。在刚接触webpack的时候总是webpack一下-测一下-改一下-再webpack一下,这种方式最后让很多人崩溃了觉得webpack一点都不好用。其实这是错误的使用方式。

正确的方式应直接执行webpack --watch 这样webpack会自动编译,第一回的时候确实很慢,但之后的自动编译就要快了好多,打包时间相差几倍。

技巧2

webpack配合的React,jQuery一些共有的库去使用,虽然没写几行代码却发现我靠打个文件居然好几M了。能不能不让这些共有库打入我们的文件呢?

externals: 
    {
      'antd':true,
      'react': 'React',
      'react-dom': 'ReactDOM'
    }

在webpack配置文件的根上加上这些内容。告诉webpack在require(“react”)的时候不要去加载模块,直接去读(这里还不是很明白,有的说“:”后面是window.React,写了后面可以直接使用无需require,待确定后再补充,一般写true就可以了),当然这种方式要在html入口手动引入js文件:

<script src="node_modules/react/dist/react-with-addons.js"></script>
<script src="node_modules/react-dom/dist/react-dom.min.js"></script>
<script src="node_modules/antd/dist/antd.min.js"></script>

在项目中正常使用require(“react”)试试,不会被打进去了,文件变为了几k,突然感觉webpack这东西还是能用的。

技巧3

大部分情况下通过技巧2已经可以搞定大部分问题了,但是在用MaterialUI的时候,点击事件总是报一个错误,大概意思是重复的引入了react什么的。如果出现这个问题,那么请使用技巧3。将那些共有的模块打进另外一个文件中,然后使用CommonsChunkPlugin插件,在webpack ?watch非第一编打包的时候就不会重复的打另外一个文件了。

entry: {
    //这是我自己文件的入口,换成自己的
    main: './apps/main.jsx',
    //这个是把外面的东西打包成common.js
    'common':['./node_modules/react/dist/react-with-addons.min.js','./node_modules/react-dom/dist/react-dom.min.js']

  },
plugins: [
    //把common.js变为共有的,除第一遍打包后就不会再打包了
    new webpack.optimize.CommonsChunkPlugin('common', 'common.js')
  ]
output: {
    path: path.resolve(containerPath,'dist/'),
    filename: '[name].js'
  }

在webpack配置文件的根上加上这些内容,在html入口处需要引入common.js

//确认一下是不是第一回打包后这个文件已经有了
<script src="dist/common.js"></script>

这种方式在webpack -watch后第一遍依旧很慢(因为要打common) 之后修改默认打包是就不会再打common了。而且还有一个优点就是不用再引React,jquery一堆文件了,只引common一个文件就ok。

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

Javascript 相关文章推荐
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
Apr 26 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
May 13 Javascript
JavaScript参数个数可变的函数举例说明
Oct 10 Javascript
两种JS实现屏蔽鼠标右键的方法
Aug 20 Javascript
JS实现下拉菜单赋值到文本框的方法
Aug 18 Javascript
javascript定义类和类的实现实例详解
Dec 01 Javascript
JQuery给select添加/删除节点的实现代码
Apr 26 Javascript
JavaScript异步上传图片文件的实例代码
Jul 04 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
Dec 08 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
May 20 Javascript
全面分析JavaScript 继承
May 30 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
Sep 28 Javascript
详解微信小程序Radio选中样式切换
Jul 06 #Javascript
Node.js 回调函数实例详解
Jul 06 #Javascript
详解vue渲染从后台获取的json数据
Jul 06 #Javascript
微信小程序 Buffer缓冲区的详解
Jul 06 #Javascript
VUE axios发送跨域请求需要注意的问题
Jul 06 #Javascript
vue-cli如何添加less 以及sass
Jul 06 #Javascript
微信小程序 跳转传递数据的实例
Jul 06 #Javascript
You might like
Access数据库导入Mysql的方法之一
2006/10/09 PHP
php 301转向实现代码
2008/09/18 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
JCalendar 日历控件 v1.0 beta[兼容IE&amp;Firefox] 有文档和例子
2007/05/30 Javascript
js继承的实现代码
2010/08/05 Javascript
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
2015/04/17 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
jQuery命名空间与闭包用法示例
2017/01/12 Javascript
Js利用prototype自定义数组方法示例
2017/10/20 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
ES6关于Promise的用法详解
2018/05/07 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
Python中实现常量(Const)功能
2015/01/28 Python
python用10行代码实现对黄色图片的检测功能
2015/08/10 Python
利用matplotlib+numpy绘制多种绘图的方法实例
2017/05/03 Python
Python读取图片为16进制表示简单代码
2018/01/19 Python
python最长回文串算法
2018/06/04 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
2020/02/24 Python
matplotlib 对坐标的控制,加图例注释的操作
2020/04/17 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
Python爬虫制作翻译程序的示例代码
2021/02/22 Python
animation和transition的区别
2020/10/12 HTML / CSS
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
数字天堂软件测试面试题
2012/12/23 面试题
银行实习人员自我鉴定
2013/09/22 职场文书
迷你西餐厅创业计划书范文
2013/12/31 职场文书
酒店节能减排方案
2014/05/26 职场文书
淘宝活动总结范文
2014/06/26 职场文书
国庆节标语大全
2014/10/08 职场文书
十八大宣传标语
2014/10/09 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
租车协议书
2015/01/27 职场文书
《我的长生果》教学反思
2016/02/20 职场文书