Angular 延迟加载模块和共享模型 类

Angular lazy loaded modules and shared model classes

在我的应用程序中,我有很多简单的数据模型 classes。例如

export class Client {
   first_name: string;
   last_name: string;
   fullName(): string {
       return `${this.first_name} ${this.last_name}`;
   }
}

注意这不是 ClientService 提供者 class。这些是整个应用程序中使用的核心模型 classes。现在我想实现延迟加载的 ng 模块。 Angular docs describe how to share components, providers, directives and pipes. However there is noting about simple (non annotated) classes. The Heros example has an exported model class 但它不在其模块外使用。

我猜根模块应该导入所有模型 classes。然后功能模块应该只导入模型 class 声明。加载所有模块后,应该有一个 fullName() 方法定义。这是否意味着我应该为模型 classes 定义一个模块?是否可以对未注释的 classes 执行此操作?

更新: 我查看了dist目录下的文件。事实证明,客户端 class 方法未包含在延迟加载模块 (*.chunk.js) 中。但这是如何工作的呢? Angular/Webpack 如何知道哪些 class 应该打包到 main.bundle.js 中,哪些应该打包到 chunk.js 文件中?

Webpack 进行全局应用程序源代码分析并保留一个 register which class is referenced from. If a class is referenced only from a lazy loaded module 然后将其打包到延迟加载的模块中 (*.chunk.js)。

从主模块引用的通用 类 被打包到主包中。因此不存在于延迟加载的模块中,它们应该由主包加载。

NgModule(主要和延迟加载)被视为依赖图的应用程序入口点。模型 类 不能被视为应用程序入口点,因此无需注释它们(不需要其他信息)。 Webpack 将完成解决依赖关系的所有脏工作。