首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >核心模块、共享模块和功能模块应该包括哪些内容?

核心模块、共享模块和功能模块应该包括哪些内容?
EN

Stack Overflow用户
提问于 2020-09-24 05:58:46
回答 1查看 3.9K关注 0票数 4

我读过很多关于这个问题的文章,但是处理这件事仍然有困难。对不起,如果这是一个复制,不管!

因此,基本上,我正在从头开始构建一个有角度的应用程序,并且我想按照最好的约定来组织我的代码。我有一个核心模块,目前包括一个通用数据访问单例服务和一个使用它的auth服务。我无法理解的是,何时应该创建一个功能模块,以及何时该功能属于核心模块。

核心模块树:

例如,Auth听起来像app核心,但在我的例子中,它也包括一些声明(组件等),并且可能需要从共享模块中导入一些UI原子/分子。它是否需要一个直接导入根模块的特性模块?我应该让核心模块导出auth模块的声明吗?或者我应该为auth (核心模块)分离提供程序,并创建另一个auth特性模块(用于声明)?

布局模块、模态模块等也是如此。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-24 07:25:46

对于小型应用程序,您不需要考虑这一点。但是如果应用程序足够大,你可以模块化你的应用程序。

对于有很多路径的大型应用程序,您可能会考虑延迟加载。延迟加载将有助于保持初始包的尺寸更小,这意味着只有核心模块将在开始加载时,应用程序。它将减少您的应用程序的初始加载时间。

核心模块

  • 这个模块将加载应用程序。
  • 将包含单例项--在整个应用程序中只实例化一次或只在一个地方使用。
  • 只由AppModule导入一次,没有其他功能模块将导入此模块。

您可以将以下项目放在核心模块中(如果您认为合适,也可以放置其他项目)。

modules.

  • components:
  • 模型:用于多个特性身份验证、配置文件、页眉、页脚、布局、主页、错误、对话式
    • 单例服务的模型,这些服务将由日志、存储、共享、模式、身份验证、文件、旋转等功能模块使用。

为了防止其他功能模块重新导入核心模块,可以在CoreModule中添加以下构造函数:

代码语言:javascript
复制
constructor(@Optional() @SkipSelf() parentModule: CoreModule) {
    if (parentModule) {
        throw new Error(
            'CoreModule is already loaded. Import it in the AppModule only.');
    }
}

共享模块

它包含了常用的指令、管道和组件,这些指令、管道和组件被核心模块的功能modules

  • imported组件和其他特性modules.

  • imports: CommonModule、RouterModule、FormsModule、ReactiveFormsModule、材料模块和其他库modules.

  • declarations:组件重复使用和引用,这些指令、管道和组件将在不同的功能模块中重复使用,即HexadecimalCellEditorComponent.

  • exports:所有导入和声明的items.

  • providers:组件都不应在该模块中提供服务。

特征模块

声明仅在本模块中使用的模型、组件、服务和其他项目。

对于每个功能模块,您也可以创建一个路由模块。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64040341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档