webpack的优化

webpack优化

在咱们构建单页面应用(vue, React)或封装插件时,很大机会用到webpack,这个JavaScript的打包工具.
但项目代码日益增多时,webpack一些简单的配置会暴露种种弊端(打包时间长,代码大).
如下是结合自身开发和学习webpack过程解决问题的总结.css

打包时间长

DllPlugin

不少人都知道webpack.optimize.CommonsChunkPlugin这个插件是用来提取公共库的,但这个插件也解决不了公共库重复打包的问题.
然而,DllPlugin这个插件就能够解决.
这个插件会先把公共库打包.
它本身拥有独立的webpack配置文件,配置文件入口处是须要打包的公共库.
当它打包完后,会生成公共的js包和manifest.json.
manifest.json是用来让主配置文件DLLReferencePlugin映射到相关的依赖上去的vue

devtool cheap-module-eval-source-map

当咱们使用webpack打包后的代码都通过编译的,因此变得难以调试.
因此webpack给了devtool的api,会经过Source Map找出出错的正确位置.
选择devtool的cheap-module-eval-source-map缘由是,每一个模块使用eval()大幅提升持续构建效率和没有生成列映射节省构建时间(浏览器引擎会自动给出列信息).webpack

性能优化

样式的分离与压缩

使用extract-text-webpack-plugin将各个脚本里的样式提取到出来.
若是设置allChunks: true会使提取出来的样式合并到一个文件.
使用optimize-css-assets-webpack-plugin将样式进行压缩.web

脚本的压缩

使用uglifyjs-webpack-plugin将脚本进行压缩.json

js性能优化

webpack每一个模块都会放入一个闭包函数中.
使用webpack.optimize.ModuleConcatenationPlugin会将相关联的模块放入一个闭包里.
从而减小闭包的数量.api

提取公共代码

使用DllPluginwebpack.optimize.CommonsChunkPlugin会将公共的代码提取出来打包到其余文件.
避免重复打包,从而减小包的大小.浏览器

服务器预压缩

当服务开启预压缩时.
会优先获取以文件名称加.gz结尾的文件,这份文件是压缩事后的文件,体积会小.
使用CompressionWebpackPlugin会生成对应压缩文件.性能优化

相关文章
相关标签/搜索