解决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 相关文章推荐
js split 的用法和定义 js split分割字符串成数组的实例代码
May 13 Javascript
jquery动态导航插件dynamicNav用法实例分析
Sep 06 Javascript
input file上传 图片预览功能实例代码
Oct 25 Javascript
基于javascript实现的购物商城商品倒计时实例
Dec 11 Javascript
深入理解JavaScript中的预解析
Jan 04 Javascript
javascript事件的传播基础实例讲解(35)
Feb 14 Javascript
JavaScript 数据类型详解
Mar 13 Javascript
React-Native中禁用Navigator手势返回的示例代码
Sep 09 Javascript
深入理解Node内建模块和对象
Mar 12 Javascript
js常用正则表达式集锦
May 17 Javascript
jQuery实现的移动端图片缩放功能组件示例
May 01 jQuery
js作用域及作用域链工作引擎
Jul 07 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
php网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
php数组指针操作详解
2017/02/14 PHP
PHP count_chars()函数讲解
2019/02/14 PHP
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
2007/08/13 Javascript
jquery遍历input取得input的name
2009/04/27 Javascript
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
小议Javascript中的this指针
2010/03/18 Javascript
JavaScript等比例缩放图片控制超出范围的图片
2013/08/06 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
2014/07/10 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
2015/03/01 Javascript
AngularJS基础知识笔记之表格
2015/05/10 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
关于RequireJS的简单介绍即使用方法
2016/10/20 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
JS正则表达式验证密码格式的集中情况总结
2017/02/23 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
用node和express连接mysql实现登录注册的实现代码
2017/07/05 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
pymongo给mongodb创建索引的简单实现方法
2015/05/06 Python
Django 视图层(view)的使用
2018/11/09 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
如何使用python写截屏小工具
2020/09/29 Python
Python用Jira库来操作Jira
2020/12/28 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
德国W家官网,可直邮中国的母婴商城:Windeln.de
2021/03/03 全球购物
暑假家长评语大全
2014/04/17 职场文书
班委竞选演讲稿
2014/04/28 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
涨价通知怎么写
2015/04/23 职场文书
python实现大文本文件分割成多个小文件
2021/04/20 Python
海贼王十大逆天果实 魂魂果实上榜,岩浆果实攻击力最强
2022/03/18 日漫