Есть ли какой-нибудь удар по производительности для нескольких маршрутов, указывающих на один и тот же угловой компонент? - PullRequest
4 голосов
/ 24 апреля 2019

Я хочу, чтобы несколько маршрутов указывали на один и тот же компонент, чтобы я мог изменить поведение компонента по умолчанию.

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

Есть ли снижение производительности, если несколько маршрутов указывают на один компонент, например, несколько экземпляров в памяти во время выполнения или что-то еще?

1 Ответ

1 голос
/ 24 апреля 2019

Это не окажет значительного влияния, поскольку Angular создает компонент только тогда, когда маршрут активен.

По этой причине методы жизненного цикла вызываются для компонента с активным маршрутом. Мы можем подтвердить это с помощью простых методов, таких как ngOnInit и ngOnDestroy.

Внутри маршрутизатор работает аналогично добавлению этих компонентов в массив entryComponents. Таким образом, даже если маршрут будет активирован позже во время выполнения, угловой компилятор знает, что включить их в сборку.

Еще одна вещь, которую следует помнить, это то, что Angular выполняет первое сопоставление маршрутов в массиве маршрутизаторов, начиная с корня. Следовательно, порядок, в котором мы добавляем маршруты, важен. Типичным примером этого является то, что мы часто объявляем not-found или не совпадающие пути, т. Е. ** в конце массива маршрутов.

Из угловой документации @ https://angular.io/guide/router#configuration:

Порядок маршрутов в конфигурации имеет значение, и это по дизайн. Маршрутизатор использует стратегию выигрыша первого совпадения при сопоставлении маршруты, поэтому более конкретные маршруты должны быть размещены выше менее конкретных маршруты. В приведенной выше конфигурации маршруты со статическим путем указан первым, за ним следует пустой маршрут, который соответствует маршрут по умолчанию. Маршрут с подстановочными знаками идет последним, потому что он соответствует каждому URL и должен выбираться только в том случае, если сначала не найдено ни одного другого маршрута.

Учитывая вышеизложенное, единственной производительностью будет O (N) для сопоставления пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...