在我的应用程序中,我有很多简单的数据模型类。例如
export class Client {
first_name: string;
last_name: string;
fullName(): string {
return `${this.first_name} ${this.last_name}`;
}
}
请注意,这不是ClientService提供程序类。这些是整个应用程序中使用的核心模型类。现在我想实现延迟加载的ng模块。 Angular docs描述了如何共享组件,提供者,指令和管道。然而,注意到简单(非注释)类。 Heros示例有an exported model class但不在其模块之外使用。
我猜根模块应该导入所有模型类。然后,要素模块应仅导入模型类声明。加载所有模块后,应该有一个fullName()
方法定义。这是否意味着我应该为模型类定义一个模块?是否可以对未注释的类执行此操作?
更新:我检查了dist目录中的文件。事实证明,Client类方法并未包含在延迟加载的模块(* .chunk.js)中。但这是如何工作的? Angular / Webpack如何知道应该将哪些类打包到main.bundle.js中以及哪些类打包到chunk.js文件中?
答案 0 :(得分:2)
Webpack执行全局应用程序源代码分析,并保留register引用哪个类。如果仅从a lazy loaded module引用类,则将其打包到延迟加载的模块(* .chunk.js)中。
从主模块引用的公共类被打包到主包中。因此,在延迟加载的模块中不存在它们,它们应该由主包加载。
NgModules(主要和延迟加载)被视为依赖图的应用程序入口点。模型类不能被视为应用程序入口点,因此不需要对它们进行注释(不需要其他信息)。 Webpack将完成解决依赖关系的所有肮脏工作。