preloadingStrategy: PreloadAllModules, у меня набегает логов роута на 2300 строк, потом приложение зависает если походить по роутам приложения. Если выключить стратегию preloadingStrategy: NoPreloading,, то работает норм. Что не так? Тут очевидно какой-то прикол ангуляра.
@definitelyfakename @thekiba @waterplea коллеги, привет! подскажите, пожалуйста, в какую сторону смотреть? Я конечно могу просто отключить стратегию загрузки всех модулей, но хочется понять что не так. Использую 9 версию ангуляра.
я понимаю. я его специально включил, когда разбирался в чем дело. если его выключить то также приложуха зависает. отключаешь стартегию загрузки и норм.
Потому что модулей очень много, и чтобы их оптимально загружать, надо написать кастомную стратегию загрузки модулей, которая будет срабатывать тогда, когда пользователь ничего не делает
Правильно я понимаю что грузится по сети тот модуль который описан так loadChildren: () => import('...) ?
Да, и не только Angular генерирует дополнительные чанки для лезимодулей, комбинируя общие зависимости в отдельных чанках для лезимодулей, которые их используют
я посчитал по сети у меня грузится однотипных файлов 80 штук 48-es2015.3070293bfe439cf3174a.js, я так понимаю то модули
Создай свою стратегию или оставь по default :)
Вообще мне понравилась идея загружать модули preload только по ссылкам которые появились в UI, остальные lazy. Идея пришла после просмотра этого. Building Fast Angular Applications by Default. Minko Gechev. JS Fest 2019 Spring https://www.youtube.com/watch?v=Ewe_noCGtUQ
спасибо. я поковырялся в баге, она не с модулями связанна. а с onPush. походу геттер из шаблона зависал приложуху. пытаюсь понять почему на проде этой проблемы нет.
О_о Вы там факториалы высчитываете? Расскажите пж причину когда найдете
Prod ......... classic ....
нет обычный компонент. Что я заметил. если включить онпуш и походить по его чайлд роутам, то все работает. Если отключить то приложуха зависает. На проде такого нет. Счем это может быт связанно?
Включите профайлинг на пару сек и посмотрите, из-за чего виснет
С он пушем геттер вызывается с десяток раз. Со статегией дефаолт тысячи раз, особенно после перехода по чайладм. Почему на проде этой проблемы нет? Там такой же код) @Component({ selector: 'sol-release-details-create', templateUrl: './release-details-create.component.html', providers: [UnsubscribeService], }) export class ReleaseDetailsCreateComponent implements OnInit { public release$!: Observable<IReleaseDTO | null>; public isEdit: boolean = true; public fDReleaseDTO: IFormDataChange<ReleaseFormModel> | null = null; public get isFormValid(): boolean { if (this.fDReleaseDTO) { return this.fDReleaseDTO.status === FORM_STATUS.VALID; } return false; }
на продакшн почему нет зависаний сайта?
потому что геттер не вызывается ?)
конечно вызывается
Проблема не в этом коде, 100% Кто-то дергает cd как бешеный - мб таймер | async в инпут запровайжен, мб еще что
Вот так геттер дергать нормально в ангуляре?
Попробуй отрубить проверку форм isFormValid()
И вот это обязательно попробуйте
@waterplea вот симптом
да, спасибо. попробую завтра. пока нужно коллегам фикс отгрузить. а то все крашится на тесте)
А правильно я понимаю что профайлинг не закончится никогда? при такой загрузке?
Надо на стоп жать :) Если виснет и профайлинг, тогда уже надо вручную смотреть
Тогда должен скоро ожить
Обсуждают сегодня