繁体   English   中英

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

[英]Angular core/feature/shared modules: what goes where

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

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

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

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

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

  1. CsrfService(听起来像我的核心)
  2. 记录器(angular2-logger服务)
  3. HttpModule(核心还是共享?)
  4. Logged-in-guard和AuthService(我使用AuthService使用NavbarComponent / NavbarModule和LoginComponent),那些功能(登录/身份验证)还是核心/共享?

因此,主要问题是如何选择我列出的项目以及那些新项目。

您的问题的答案是主观的,但是您可以遵循官方文档中的一些建议: 我应该使用哪些模块以及如何使用它们? 如果您还没有阅读有关NgModule和FAQ的文档,我建议花几个小时研究它们,事情会更清楚(至少它们对我来说:)

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

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

一般建议是:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM