gpt4 book ai didi

Angular 核心/功能/共享模块 : what goes where

转载 作者:太空狗 更新时间:2023-10-29 16:50:23 24 4
gpt4 key购买 nike

首先,它不是任何其他问题的重复,我已经阅读了有关该问题的 Angular 指南。但是我还有几个问题。

功能模块是最简单的模块——你有一个功能——将它分组到功能模块中。假设除了明显的功能外,我还拥有每个应用程序都拥有的页面:

  1. 主登陆页面(不是 app.template.html,而是它首先在其路由器导出中呈现的内容)
  2. 错误页面,例如 404
  3. 联系人页面,关于我们页面

我或许可以将所有内容都移动到名为“static”的功能模块,但我不喜欢这个名称,也不喜欢将大部分不相关的内容分组到同一个模块中,即错误页面和联系页面。那么,提到的页面的模式是什么?

现在,共享与核心模块。我有以下元素:

  1. CsrfService(对我来说听起来像是核心服务)
  2. 记录器(angular2-logger 服务)
  3. HttpModule(核心还是共享?)
  4. Logged-in-guard 和 AuthService(我有 NavbarComponent/NavbarModule 和 LoginComponent 使用 AuthService),那么这些是功能(登录/授权)还是核心/共享?

所以,主要问题是如何为我列出的项目和类似的新项目选择决定。

最佳答案

您的问题的答案是主观的,但是您可以遵循官方文档中的一些建议:What kinds of modules should I have and how should I use them? .如果您还没有阅读关于 NgModule 和 FAQ 的文档,我建议您花几个小时研究它们,事情会更清楚(至少它们对我来说是这样的:)

我正在使用以下设置并且对我来说效果很好:

  • app/shared - 这是我保存每个其他模块都需要的小东西的模块。我在那里有 3 个子模块 directivescomponentspipes,只是为了让事情井井有条。示例:filesize.pipeclick-outside.directiveoffline-status.component...
  • app/public - 在这个模块中,我保留公共(public)路由和顶级组件。示例:about.componentcontact.componentapp-toolbar.component
  • app/core - 应用程序需要(并且不能没有)的服务放在这里。示例:ui.serviceauth.serviceauth.guarddata.serviceworkers .服务....
  • app/protected - 类似于public,仅供授权用户使用。该模块具有 protected 路由和顶级组件。示例:user-profile.componentdashboard.componentdashboard-sidebar.component...
  • app/features - 这是应用程序功能所在的模块。它们被组织在几个子模块中。如果您的应用播放音乐,这就是 playerplaylistfavorites 子模块所在的位置。如果您查看 @angular/material2这相当于它们的 MaterialModule 和许多子模块,例如 MdIconModuleMdSidenavModule 等。
  • app/dev - 我在开发时使用这个模块,不要在生产中使用它。

一般建议是:

  • 按功能而非页面组织特性
  • 在自己的模块中保留相似的路由(有利于延迟加载)
  • 应用运行所需的服务转到核心
  • 您多次(或两次)导入的内容可能适合共享
  • 详细阅读文档,那里有很多好东西

回答您的具体问题:我会将所有这些路由放在一个模块中 - staticpublic,无论名称如何。 CsrfService - 核心,Logger - 核心或开发,HttpModule - 核心,你只需要一个实例(可能),auth - 核心。不要将服务置于共享状态。

如果您无法决定如何/将哪些内容分组到某个功能中,请制作一个新应用,复制特定的功能文件夹,它应该也可以在那里工作。如果没有,您需要更好地组织事情。

关于Angular 核心/功能/共享模块 : what goes where,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42779871/

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