webpack构建优化

压缩Minimize

为了最小化你的脚本(和你的css,如果你使用css-loader)webpack支持一个简单的选项:
--optimize-minimizeresp.new webpack.optimize.UglifyJsPlugin()
这是个简单但是高效的优化你的应用的代码。
正如你已经知道(如果你已经阅读剩下的文档)webpack给你的模块和块ID ids来识别它们。 Webpack可以通过一个简单的选项来改变id的分布,以获得经常使用的id的最小id长度:
--optimize-occurrence-orderresp. new webpack.optimize.OccurrenceOrderPlugin()
entry chunks有较高的优先级

去重 Deduplication

如果你使用一些库和冷依赖树,可能会出现一些文件是相同的。 Webpack可以找到这些文件并对其进行重复数据删除。 这可以防止在代码包中包含重复的代码,而是在运行时应用函数的副本。 它不影响语义。你可以这样启用它:
--optimize-deduperesp.resp. new webpack.optimize.DedupePlugin()
此功能会向入口块(entry chunks)添加一些开销。

分块chunks

在编写代码时,您可能已经添加了许多代码拆分点来按需加载内容。 编译之后,您可能会注意到有太多的块太小 - 创建更大的HTTP开销。 幸运的是,Webpack可以通过合并它们后处理你的块。您可以提供两个选项:

  • 限制chunks的数量的最大值: --optimize-max-chunks 15
    new webpack.optimize.LimitChunkCountPlugin({maxChunks: 15})
  • 限制chunks大小的最小值:--optimize-min-chunk-size 10000
    new webpack.optimize.MinChunkSizePlugin({minChunkSize: 10000})
    Webpack将通过合并块来处理它(它将喜欢具有重复模块的合并块)。 没有任何东西将被合并到条目块(entry chunk)中,以便不影响初始页面加载时间。

单页应用

单页面程序是webpack用于设计和优化的webapp类型。
您可能已将应用程序拆分为多个块,并在您的路由器上加载。 入口块只包含路由器和一些库,但没有内容。 这在您的用户导航通过您的应用程序时,但工作很好,但对于初始页面加载你需要2次往返:一个为路由器,一个为当前内容页面。
如果您使用HTML5 History API来反映网址中的当前内容网页,则您的服务器可以知道客户端代码将请求哪个内容网页。 要保存到服务器的往返行程,您可以在响应中包含内容块:这可以通过将其添加为脚本标记来实现。 浏览器将加载两个并行的块。

<script src="entry-chunk.js" type="text/javascript" charset="utf-8"></script>
<script src="3.chunk.js" type="text/javascript" charset="utf-8"></script>

您可以从统计信息中提取块文件名。 (stats-webpack-plugin可以用于导出构建统计信息)

多页应用

发布了51 篇原创文章 · 获赞 23 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/liuqi332922337/article/details/53162336