将路由集中到Angular中的服务

时间:2018-08-05 19:53:35

标签: angular design-patterns angular-routing single-responsibility-principle

此问题集中于如何在大型应用程序中管理路由。我仍然不确定如何处理,或者教程是否远远超出最佳实践。

好吧,让我们说清楚。当应用程序增长时,迟早会有成百上千的routerLink指令带有诸如

的硬编码字符串
<a routerLink="foo"> 

或动态的东西

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

在指令中永久重复硬编码的路由片段和动态组装路由确实不对。

关于不要重复自己单一责任原则(SRP),我想到的第一件事就是创建类似 RouteService < / em>集中这些路线,并可以注入到组件中。它还可能为路由模块提供常量。

因此,尽管Angular样式指南preaches to obey SRP从未解决过此问题。像《英雄之旅》这样的教程通常太小,以至于无法考虑编写大型应用程序时出现的问题。

使用可注射的 Service 创建路线是否有任何警告? 是否有任何旨在从组件/模板中提取硬编码路由的模式,概念,框架?

1 个答案:

答案 0 :(得分:1)

我在Angular 4的SPA中(大约70个子页面)

我使用了[routerLink]=getRouterLink(page_name)。 在我的组件typescript类中,我调用了一个链接服务,该链接服务从java后端的yaml文件中读取到给定page_name的链接。 我认为这是将DRY和SRP应用于此主题的最优雅的方法。 实际上,可惜的是,角度教程没有处理这个主题。