У меня есть приложение обновления Angular / AngularJS, и в настоящее время я занимаюсь переносом всего с AngularJS на Angular. Это довольно большой проект, поэтому мне определенно нужно пойти по пути обновления.
Я использую @ uirouter / angular-hybrid и имею корневое состояние, которое по-прежнему является AngularJS (навигация и прочее), и дочерним представлением. В этом дочернем представлении я постепенно обновляю все компоненты до Angular. По соображениям производительности мне пришлось использовать downgradeModule () (https://angular.io/guide/upgrade-performance) вместо UpgradeModule.
Для компонентов пользовательского интерфейса я использую Angular Material 2.
Итак, что касается настройки, теперь к вопросу / проблеме:
Когда вкладка со страницей находится в фоновом режиме и вы возвращаетесь на страницу позже (по крайней мере, через 5-10 минут), вся страница задерживается и не отвечает. Чем дольше вы отсутствуете и вкладка находится в фоновом режиме, тем дольше задержка.
Что я уже пробовал / узнал:
- Кажется, есть зарегистрированные события, но поскольку вкладка находится в фоновом режиме, они не выполняются, но все выполняются одновременно, как только вы вернетесь на вкладку. Вот скриншот профиля
- Удаление обнаружения угловых изменений и использование
ngZone: 'noop'
не имеет никакого эффекта - Отключение всех анимаций не влияет
- Включение режима производства Angular немного улучшило его (также может быть иллюзией), но проблема все еще сохраняется
- Я разрабатываю в Chrome, проблема существует и в других браузерах (например, Firefox, Safari).
- Это происходит только в том случае, если компонент представления маршрутизатора является компонентом Angular, компонент представления AngularJS, похоже, не затронут
В настоящее время я работаю над чистым образцом приложения, чтобы воспроизвести проблему и получить дополнительный контекст для дальнейшего тестирования. Скоро добавлю.
Версии lib
Угловой: 6.1.0
AngularJS: 1.7.2
zone.js: 0.8.26
@ uirouter / угловой гибрид: 6.0.0
Обновление (август 2019 г.)
Все еще происходит с текущими версиями Lib Angular 8, AngularJS 1.7.8 и uirouter / hybrid 8