Angular - 如果已将不必要的 ngModule 导入别处,导入它们是否会增加文件大小?
Angular - Does importing unnecessary ngModules increase file size if they have been imported elsewhere?
我正在使用一个相当大的 Angular 应用程序,目前所有共享组件和模块都在一个共享模块中,每当我需要它导出的任何东西时我都会导入它。
但是我有一些小的功能模块,只需要共享模块中的很少模块,我是否应该增加架构的复杂性和模块化,以便只导入我需要的模块,即使它们被导入其他地方?
Angular docs state 已经在另一个模块中导入的模块被缓存并且不是问题,但这意味着什么,应用程序甚至获得 slower/bigger那么?
示例:
模块 1 导入 A、B、C。
模块 2 导入 A、C、D。
如果我在两个模块中导入 A、B、C、D(例如,通过共享模块),是否会有性能损失?
也许吧。这取决于您应用的结构。
如果您不使用 lazy-loading
,您可以按照文档进行操作,它不会重复任何代码。使用 angular-cli 的原始配置创建的默认 chunks
将为您的模块(以及其他内容的其他块)生成一个 scripts.bundle.js
。
现在,如果您正在使用 lazy-loading
(正如您在问题的评论中所说),它将创建一个 chunk
每个延迟加载的模块,你应该谨慎行事。
angular-cli 使用 webpack
来创建这些块,并且在发表此评论时,它 将复制 导入的模块(和第三个派对图书馆!)在每个需要它们的块上。
这是一个 known issue and it has been partially addressed, but it's waiting for webpack to implement a feature 需要解决的问题。
建议:
为每个惰性加载模块创建一个 SharedModule
,并且 import/declare 仅创建该模块所需的东西,并仅使用此 SharedModule
。 不要从惰性加载模块.
中导入主应用程序的 SharedModule
这仍然会复制不同块所需的模块,但至少不会在不需要的地方添加不必要的模块。
并留意上面链接的问题,这样您就知道什么时候可以避免这种解决方法。
干杯!
我正在使用一个相当大的 Angular 应用程序,目前所有共享组件和模块都在一个共享模块中,每当我需要它导出的任何东西时我都会导入它。
但是我有一些小的功能模块,只需要共享模块中的很少模块,我是否应该增加架构的复杂性和模块化,以便只导入我需要的模块,即使它们被导入其他地方?
Angular docs state 已经在另一个模块中导入的模块被缓存并且不是问题,但这意味着什么,应用程序甚至获得 slower/bigger那么?
示例: 模块 1 导入 A、B、C。 模块 2 导入 A、C、D。
如果我在两个模块中导入 A、B、C、D(例如,通过共享模块),是否会有性能损失?
也许吧。这取决于您应用的结构。
如果您不使用 lazy-loading
,您可以按照文档进行操作,它不会重复任何代码。使用 angular-cli 的原始配置创建的默认 chunks
将为您的模块(以及其他内容的其他块)生成一个 scripts.bundle.js
。
现在,如果您正在使用 lazy-loading
(正如您在问题的评论中所说),它将创建一个 chunk
每个延迟加载的模块,你应该谨慎行事。
angular-cli 使用 webpack
来创建这些块,并且在发表此评论时,它 将复制 导入的模块(和第三个派对图书馆!)在每个需要它们的块上。
这是一个 known issue and it has been partially addressed, but it's waiting for webpack to implement a feature 需要解决的问题。
建议:
为每个惰性加载模块创建一个 SharedModule
,并且 import/declare 仅创建该模块所需的东西,并仅使用此 SharedModule
。 不要从惰性加载模块.
SharedModule
这仍然会复制不同块所需的模块,但至少不会在不需要的地方添加不必要的模块。
并留意上面链接的问题,这样您就知道什么时候可以避免这种解决方法。
干杯!