首页 > 解决方案 > 多个路由指向同一个 Angular 组件是否会对性能造成影响?

问题描述

我想让多个路由指向同一个组件,以便我可以更改组件的默认行为。

{ path: 'city/:zipCode/:cityState', component: JobSearchComponent },
{ path: 'company/:organizationId/:companyName', component: JobSearchComponent }

多个路由指向单个组件(例如运行时内存中的多个实例)是否会导致性能损失?

标签: angularperformanceangular-routing

解决方案


它不会产生重大影响,因为 Angular 仅在路由处于活动状态时才实例化组件。

这就是为具有活动路由的组件调用生命周期方法的原因。ngOnInit我们可以用和等简单的方法来确认这一点ngOnDestroy

在内部,路由器的工作方式类似于将这些组件添加到entryComponents阵列中。这样即使路由将在运行时稍后激活,角度编译器也知道将它们包含在构建中。

要记住的另一件事是,Angular 从根开始对路由器数组中的路由进行第一次匹配。因此,我们添加路线的顺序很重要。常见的例子是我们经常在路由数组的末尾声明not-found或不匹配即路径。**

从 Angular 文档@ https://angular.io/guide/router#configuration

配置中路由的顺序很重要,这是设计使然。路由器在匹配路由时使用先匹配获胜策略,因此更具体的路由应该放在不太具体的路由之上。在上面的配置中,首先列出了具有静态路径的路由,然后是与默认路由匹配的空路径路由。通配符路由位于最后,因为它匹配每个 URL,并且只有在没有其他路由首先匹配时才应选择。

考虑到上述情况,路径匹配的唯一性能将是 O(N)。


推荐阅读