我应该在生产中使用vendorChunk吗

时间:2018-09-05 07:49:51

标签: angular

我正在使用Angular6,我想知道在生产环境中将"vendorChunk"设置为true还是false是否更好。我知道它的作用,但是我不确定在生产中使用的最佳价值。

4 个答案:

答案 0 :(得分:8)

这取决于您的用例。

不使用单独的供应商块的优点是您将能够获得更小的捆绑包大小。小多少取决于您的应用程序。我建议尝试带有和不带有标志的构建,以查看是否存在显着差异。

另一方面,启用vendorChunk的主要优势在于,用户将只能下载没有第三方代码的更改的客户代码(不太可能经常更改)。 / p>

总结:

在以下情况下,将vendorChunk设置为true

  • 您计划经常更新客户端代码,而无需更改许多第三方库。

在以下情况下,将vendorChunk设置为false

  • 这样做显着减小了捆束尺寸
  • 或者您不太可能经常更改客户端代码

答案 1 :(得分:0)

Devs say,在生产vendor.js中,“即使仅更改应用程序代码,通常也会获得不同的供应商块哈希”。因此,在生产中看起来似乎没有太多使用vendorChunk = true的功能。 (虽然无法检查)

但是我刚刚检查了生产应用程序的大小,是否为vendorChunk = false
main.js(1'996'389字节)

对于vendorChunk = true
main.js(193'223字节)+ vendor.js(1'804'540字节)= 1'997'763字节

我们赢得了1374个字节,这没什么,但是当然取决于应用程序。对于我来说,我认为最好还是坚持默认行为。 (对于开发人员为true,对于产品为false)

答案 2 :(得分:0)

我在公司遇到的一个很好的边缘案例可能是在一个应用中使用多个 Angular 组件,该应用大量使用具有不同框架的微前端。

例如,假设您需要在 React 应用程序中使用 Angular 组件。如果您在这种情况下使用多个 Angular 组件,则对于依赖于相同模块的所有使用的组件,单独的 var extendBootstrapSelectSanitizer = $.fn.selectpicker.Constructor.DEFAULTS.whiteList; // To allow div elements and title attributes on td elements extendBootstrapSelectSanitizer.div = ['title']; 只能加载一次。

这将缩短加载时间,因为每个组件只需要加载其 vendorChunk 即可相应地工作。

答案 3 :(得分:0)

我在搜索同样的问题,在 Angular 文档 https://angular.io/cli/build 中说该选项应该用于开发。

enter image description here