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

标签 angular lazy-loading datamodel

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

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 文件中?

最佳答案

Webpack 进行全局应用程序源代码分析并保留 register是从哪个类引用的。如果一个类仅从 a lazy loaded module 引用然后它被打包到延迟加载的模块(*.chunk.js)中。

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

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

关于Angular 延迟加载模块和共享模型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47114096/

相关文章:

angular - canActivate 依赖父路由解析

entity-framework - EF:延迟加载,渴望加载和“枚举可枚举”

angular - 运行时编译器未加载 Angular 8 和惰性模块

node.js - 在 MongoDB 中建模访问控制

javascript - 如何将字符串添加到列表中而不重复

Angular/如何获取api返回数据

iphone - 更改数据模型后保存在设备上时崩溃

Xcode 数据模型编辑器没有出现

Angular 2 : Most efficient way of using helper functions in components

iphone - 如何在垂直 UIScrollView 中延迟加载 UIView