在 Angular 中将路由集中到服务中

Centralizing routes into a Service in Angular

这个问题的重点是如何管理大型应用程序中的路由。我仍然不确定如何处理这个问题,或者教程是否远远超出了最佳实践。

好了,进入正题。当应用程序增长时,迟早会有数百个 routerLink 带有硬编码字符串的指令,例如

<a routerLink="foo"> 

或类似动态的

<a [routerLink]="'/foo/bar/' + myObj.id">

在指令中永久重复硬编码路由片段和动态组装路由感觉不太对。

关于不要重复自己单一职责原则 (SRP),我首先想到的是创建类似于 RouteService 的东西集中了这些路由并且可以注入到组件中。它还可能为路由模块提供常量。

因此,尽管 Angular 风格指南 preaches to obey SRP 这个问题从未得到解决。 英雄之旅 之类的教程通常太小,无法考虑编写大型应用程序时出现的问题。

使用可注射的 Service 创建路由或 是否有旨在从 components/templates 中提取硬编码路由的任何模式、概念和框架?

在我的 SPA Angular 4(大约 70 个子页面)中,我使用了 [routerLink]=getRouterLink(page_name)。 在我的组件打字稿 class 中,我调用了一个 link 服务,该服务从 java 后端的 yaml 文件中读取给定 page_name 的 link。 我认为这是将 DRY 和 SRP 应用于该主题的最优雅的方式。 遗憾的是 angular 教程没有处理这个主题。