gpt4 book ai didi

Angular - 使用 CoreModule 的真正实际原因

转载 作者:行者123 更新时间:2023-12-04 08:51:19 28 4
gpt4 key购买 nike

我在开发 Angular-UI 方面有相当多的经验,但对我来说根本无法计算的一件事是使用 的真正收获。核心模块 是。我确实收到了 共享模块 ,它包含许多其他模块中使用的可重用组件(如“你确定吗?”-模态对话框)。
但是 CoreModule 让我很烦——现在我应该把所有“全局使用的服务”放在那里——当然这就是我在最近的项目中所做的。但鉴于它只导入一次(在 AppModule 中) - 请向我解释一下我 真的这样做有好处吗?我想了很多(实际上可能是太多了,呵呵),我真的看不出为什么我不能忘记 CoreModule 并改用 AppModule 的充分理由 - 特别是因为现在我们可以使用 providedIn: 'root' for无论如何,全局服务。
我真的觉得我必须忽略一些东西,因为我不明白..

最佳答案

您的问题是有效的,是的,这有点发人深省。
但是,它更像是 普遍遵循的约定providedIn: 'root' 放置所有服务在 CoreModule .这背后的逻辑是,肯定会被导入一次它将由 AppModule 导入因此,它应该对应用程序全局可用。
现在,让我们退后一步,想想是什么让我们使用 providedIn: 'root'对于放置在 CoreModule 中的服务, 这样做是为了使服务是绝对的 singleton在整个应用程序中,无论它被注入(inject)到哪里,都会注入(inject)相同的实例。这显然意味着它可能被注入(inject)到多个延迟加载的模块中,但保留在 CoreModule 中。将确保我们通常将所有此类服务放在一个公共(public)模块中,即 CoreModule并且所有此类服务的实例都将在应用程序启动时创建。
在延迟加载的模块中,您绝对不想使用 providedIn: 'root' 放置服务。因为您肯定希望仅在加载延迟加载模块时才创建 Service 的实例。
正如我所提到的,没有硬性规定迫使我们这样做,这是一个普遍遵循的惯例。新开发人员第一次查看您的代码时会知道“嘿,看!这是 CoreModule,所有全局使用的单例都应该出现在这里!”。
我只举了服务的例子,你可以类似地对待其他单例的东西。
有些约定并不准确,可能存在意见分歧,将代码分成定义良好的模块,编写干净且可维护的代码才是最重要的。您可以争论导航栏组件/工具栏应该放在哪里?它在 AppModule 中仅使用一次并且在整个应用程序中都会显示相同的内容,这听起来像是 CoreModule 的候选者。但是,CoreModule不应该有任何组件。我们可以把它放在SharedModule哪里允许使用组件?它只会在一个模块中使用,为什么要把它放在一个应该被多个模块访问的模块中?把它放在 AppModule ?不是AppModule应该包含尽可能少的组件?

关于Angular - 使用 CoreModule 的真正实际原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64087662/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com