我希望有多个路由指向同一个组件,以便可以更改该组件的默认行为。
{ path: 'city/:zipCode/:cityState', component: JobSearchComponent },
{ path: 'company/:organizationId/:companyName', component: JobSearchComponent }
在运行时让多个路由指向单个组件(如内存中的多个实例)会影响性能吗?
答案 0 :(得分:1)
这不会产生重大影响,因为Angular仅在路由处于活动状态时才会实例化组件。
这就是为具有活动路由的组件调用生命周期方法的原因。我们可以使用ngOnInit
和ngOnDestroy
之类的简单方法来确认这一点。
在内部,路由器的工作方式类似于将这些组件添加到entryComponents
数组中。这样,即使稍后会在运行时激活该路由,Angular编译器也知道将其包含在构建中。
要记住的另一件事是,Angular对路由器阵列中从根开始的路由进行了首次匹配。因此,添加路由的顺序很重要。常见的例子是我们经常在路由数组的末尾声明not-found
或不匹配的**
路径。
来自Angular文档@ https://angular.io/guide/router#configuration:
路由在配置中的顺序很重要,这是通过 设计。路由器在匹配时使用首个匹配获胜策略 路线,因此应将更具体的路线放在不那么具体的上方 路线。在上述配置中,具有静态路径的路由为 首先列出,然后是与 默认路由。通配符路由排在最后,因为它匹配每个 URL,并且只有在没有其他路由首先匹配时才应选择。
考虑到上述情况,路径匹配的唯一性能将是O(N)。