繁体   English   中英

功能模块作为Angular中的库?

[英]Feature modules as libraries in Angular?

我们正在Angular的一个大型应用程序中工作,其中包含许多功能模块,每个功能模块都具有许多组件,服务和路由。

我们想知道将这些功能模块封装在库中是否是一个好主意,以便我们可以将它们作为npm依赖项导入到主项目中并使其受到控制。

这个想法是,新开发人员只能在功能模块中工作,使用版本来使事情保持正确并避免主项目中出现问题。 这类似于在Java项目中使用Maven。

关键说明:这些功能模块并不打算在其他应用程序中重复使用,它们已与此应用程序耦合。 仅在这种情况下,库才对版本控制和组织有用。

我们已经阅读了很多有关Angular模块的信息,但是我们希望对此有所了解并提供一些实际建议。 我们非常感谢您的任何反馈。

提前感谢!

丹妮

这可能不是一个好主意。 语义版本控制是语义上的 ,使用库作为开发模式可能会污染您的库版本,并在将来引起其他版本控制和规范问题。

我认为有一点需要考虑:

  1. 每个库是否都有自己的逻辑,其他库之间没有交互?
  2. 还是一种逻辑会影响所有库,您能否在这些库之间保留有意义且一致的版本控制?

如果没有,您可能会弄乱版本。

如果库不是独立的:例如,如果业务逻辑同时影响lib-a@1.1.0和lib-b@1.3.0,那么记录CHANGELOG将非常繁琐。 如果仅在几个版本后才存在并发现错误,或者需要强制还原,则将每个库还原和/或挑选到确切的所需版本将非常容易出错。

这就是为什么依赖另一个库( @typescript-eslint/parser@typescript-eslint/eslint-pluginrxjsrxjs-compat )严格要求您为每个库使用完全相同的版本号的原因-例如,您将必须在同一项目中安装rxjs@6.3.3rxjs-compat@6.3.3 您不能安全地同时使用rxjs@6.2.3rxjs-compat@6.3.3 还建议您安装相同的核心Angular框架库版本号。

但是,只有在每个库(大部分时间)受同一业务逻辑更改影响的情况下,才可能应用一致的版本控制。 即使未进行相关更改,强制进行一致的版本控制也没有意义。

我的意见

  1. 如果您能够保留有意义且一致的版本控制系统,并为每个库一致地安装相同的版本号

要么

  1. 如果每个库都具有自己严格的个人逻辑,而又不与其他库交互

然后确定,尝试一下。

一致性独立性 随便你。

否则,只需使用git flow或基于主干的开发,并进行严格的代码审查以及提交前/提交后的lint检查和测试。 只是我的观点。

如果您可行,请尝试将每个功能模块划分为一个独立的微服务。 有关微服务的更多信息,请花点时间阅读本文: https : //medium.com/@tomsoderlund/micro-frontends-a-microservice-approach-to-front-end-web-development-f325ebdadc16

暂无
暂无

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

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