如何解决webpack打包的文件体积过大的问题

html-css021

如何解决webpack打包的文件体积过大的问题,第1张

去除不必要的插件

刚开始用 webpack 的时候,开发环境和生产环境用的是同一个 webpack 配置文件,导致生产环境打包的 JS 文件包含了一大堆没必要的插件,比如 HotModuleReplacementPlugin, NoErrorsPlugin... 这时候不管用什么优化方式,都没多大效果。所以,如果你打包后的文件非常大的话,先检查下是不是包含了这些插件。

提取第三方库

像 react 这个库的核心代码就有 627 KB,这样和我们的源代码放在一起打包,体积肯定会很大。所以可以在 webpack 中设置

{

entry: {

bundle: 'app'

vendor: ['react']

}

plugins: {

new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.js')

}

}

这样打包之后就会多出一个 vendor.js 文件,之后在引入我们自己的代码之前,都要先引入这个文件。比如在 index.html 中

确实,每次打包从入口开始,会parse所有的依赖,多的时候竟然打包一次要2秒多,简直不能忍。然而,有几个解决方案,最有效的,是使用weboack

的watch,只有文件md5变化时,才会重新打包,并且只parse有变化的文件,其他没变化的文件是使用缓存的。这样子,打包时间迅速降到200ms

以内。

再优化下去的话,我们要知道webpack打包的过程中做了啥,首先是解析依赖啦,然后就是各种各样的loader。从解析依赖的角度入手,我们可以bower install一些打包好的文件,然后通过设置别名让依赖指向这个文件,这样就减去了第三方库的依赖解析时间。

然后各种各样的loader也是很耗时的,一种办法是在loader里面配include,让loader只针对特殊资源。另一种办法是让你的第三方库noparse,具体怎么设置你查文档吧。

一.介绍:

react:

他是facebook创建的javascriptUi框架,react与当时流行的jquery等不同,最大的区别就是虚拟DOM节点,加快渲染速度,并且创造了新的写法jsx,也就是允许在js中编写html;

vue.js:

解决问题跟react一致,但是他提供了另外一种方案,vue.js的模板系统就是普通的html,css,js页面,淡化了jsx写法,这样更直观,对于之前的项目重构也更容易;

相同点:

1.都是用于创建ui的js库;

2.都比较轻便;

3.都是组件化思想,组件化开发;、

4.都是虚拟dom,提高渲染速度;

5.都有独立的路由系统,以及独立的状态管理库;

6.都可以放进一个独立的html文件,或者依托于weboack模块;

优势:

vue.js:

1.模板和渲染函数的弹性选择;

2.语法简洁,项目创建简洁;

3.渲染速度快,体积更小;

react:

1.更适合超大型项目,更好的可测试性;

2.同时适用于wen端和原生的app;

3.更大的生态圈,维护的群体更大;