角度核心/功能/共享模块:什么在哪里

时间:2017-03-14 07:18:11

标签: angular

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

功能模块是最简单的 - 您有一个功能 - 将其分组到功能模块中。让我们说除了明显的功能外,我还有每个应用程序都有的页面:

  1. 主要登陆页面(不是app.template.html,而是它在路由器插座中首先呈现的内容)
  2. 错误页面,如404
  3. 联系人页面,关于我们页面
  4. 我可能会将所有内容移动到名为“静态”的功能模块,但我不喜欢这个名称,也不喜欢将大多数不相关的内容分组到同一个模块中,即错误页面和联系页面。那么,提到的页面的模式是什么?

    现在,共享vs核心模块。 我有以下项目:

    1. CsrfService(听起来像我的核心)
    2. 记录器(angular2-logger服务)
    3. HttpModule(核心还是共享?)
    4. Logged-in-guard和AuthService(我使用AuthService使用NavbarComponent / NavbarModule和LoginComponent),那些功能(登录/身份验证)还是核心/共享?
    5. 所以,主要的问题是如何选择我列出的项目以及那些新项目。

1 个答案:

答案 0 :(得分:71)

您的问题的答案是主观的,但您可以遵循官方文档中的一些建议:What kinds of modules should I have and how should I use them?。如果您还没有阅读NgModule和常见问题解答上的文档,我建议您花几个小时研究它们,事情会更加清晰(至少它们适合我:)

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

  • app / shared - 这是我保留每个其他模块所需的小东西的模块。我有3个子模块directivescomponentspipes,只是为了让事情更有条理。示例:filesize.pipeclick-outside.directiveoffline-status.component ...
  • app / public - 在此模块中,我保留了公共路由和顶级组件。示例:about.componentcontact.componentapp-toolbar.component
  • app / 核心 - 应用需要(并且无法使用)的服务转到此处。示例:ui.serviceauth.serviceauth.guarddata.serviceworkers.service ....
  • app / 受保护 - 与公开类似,仅适用于授权用户。该模块具有受保护的路由和顶级组件。示例:user-profile.componentdashboard.componentdashboard-sidebar.component ...
  • app / 功能 - 这是应用功能所在的模块。它们由几个子模块组成。如果你的应用播放音乐,这就是playerplaylistfavorites子模块的用途。如果您查看@angular/material2,这将等同于MaterialModule和许多子模块,例如MdIconModuleMdSidenavModule等。
  • app / dev - 我在开发时使用此模块,请勿将其投放到生产环境中。

一般建议是:

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

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

如果您无法决定在功能中分组的方式/内容,请创建一个新的应用,复制特定的功能文件夹,它也应该在那里工作。如果它没有,你需要更好地组织事情。