Как ускорить приложение с помощью гибрида ui-router, используя downgradeModule()

Я использую гибрид "ui-router" ( https://github.com/ui-router/angular-hybrid), загрузив его "классическим" способом.

У нас возникают проблемы с производительностью при "зависании" и других событиях, заметных в сетках данных. Мы думаем, что это связано с перекрытием / умножением обнаружения изменений между двумя версиями, описанными здесь.

https://pr18487-aedf0aa.ngbuilds.io/guide/upgrade-performance

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

Не может быть начальной загрузки модуля Angular, но без ошибок. Вот как я это делаю. Кнопка контактов (Угловой модуль) ничего не делает.

https://stackblitz.com/edit/github-ypge8f-jmshp3

Я также попытался загрузить непосредственно угловой модуль "Contacts" (приложение "lazyload" "Contacts" и подумал, что это может быть проблемой), но результат тот же. Этот вопрос также размещен здесь

1 ответ

После долгой борьбы с этим, я думаю, я наконец понял это. UI-маршрутизатор усложняет решение этой проблемы, поскольку во всех примерах Angular Hybrid, использующих downgradeModule, используется встроенный маршрутизатор. Обновил код, чтобы он работал: https://stackblitz.com/edit/github-ypge8f-jmshp3 Уловки были:

  • Модуль Angular начальной загрузки нуждался в параметре типа "UIRouter" в конструкторе, иначе он не загрузил бы его состояния:

export class AppModule { constructor(private router: UIRouter) { // "router" needed in constructor to bootstrap angular states }

  • UrlService должен быть остановлен до начальной загрузки и перезапущен после, как в обычном гибридном примере

  • Перезапуск urlService должен происходить при вызове setTimeout (не удалось найти лучший способ перехватить это действие), чтобы позволить угловым состояниям загружаться при перезагрузке страницы с URL из одного из этих состояний.

setTimeout(() => { // setTimeout needed to allow angular routes to initialize after refresh urlService.listen(); urlService.sync(); });

Другие вопросы по тегам