【问题标题】:Does seperating NgModules decrease the build time分离 NgModules 会减少构建时间吗
【发布时间】:2019-07-09 07:33:16
【问题描述】:
假设我们有一个很大的NgModuleSharedModule,它导出了多个组件中需要的大量组件。通过将SharedModule 导入功能模块,通常会产生开销,因为所有共享组件都会被导入,而不仅仅是那些必需的。拆分SharedModule 会减少构建/编译时间吗?除了可读性更好的代码之外,将其拆分为更小的模块还有什么好处吗?
非常感谢您的帮助!
【问题讨论】:
标签:
angular
angular-module
angular-compiler
angular-builder
【解决方案1】:
来自官网angular.io:
在一个包含几个组件的简单应用程序中,您只需要根模块。随着应用程序的增长,您将根模块重构为代表相关功能集合的功能模块。然后将这些模块导入根模块。
和
划定应用的区域有助于开发人员和团队之间的协作、分离指令和管理根模块的大小。
功能模块是一种组织最佳实践,而不是核心 Angular API 的概念。
没有什么可以减少构建/编译时间,所以我认为这是有道理的
对于具有大量路由的大型应用,请考虑lazy loading——一种根据需要加载 NgModules 的设计模式。
【解决方案2】:
您可以实施延迟加载,以减少您的应用加载时间
将功能拆分为模块将减少应用程序加载时间
您可以实现延迟加载,您的应用程序将按需加载到客户端,就像您有 5 个模块一样,用户想要使用 5 号模块,然后这个唯一的模块将加载到客户端。其他 4 个模块将不会被加载。
浏览器首先在客户端下载您的应用程序然后提取。您的 5 模块大小为 5MB,然后在延迟加载后您的应用程序大小将在不同的块中。模块大小将根据功能而定。
我不确定模块化方法后编译时间是否会减少。但是你的应用加载时间肯定会减少,这很重要,
您的代码将得到很好的管理和可读性。将根据角度最佳实践
模块化方法会降低代码的复杂度
大模块不是好方法。
如果您正在开发大型应用程序,迟早您必须将您的应用程序移动到模块化,否则维护或应用程序加载时间将不容易解决