有多个指向同一个Angular组件的路由是否会对性能产生影响?

时间:2019-04-23 23:50:28

标签: angular performance angular-routing

我希望有多个路由指向同一个组件,以便可以更改该组件的默认行为。

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

在运行时让多个路由指向单个组件(如内存中的多个实例)会影响性能吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

  

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

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