Подтвердить что ты не робот

Angular 2 Начальная загрузка

Я попытался изо всех сил принести размер пакета Angular 2 и был относительно успешным в уменьшении размера до ~ 300 кб (Angular 2 + jquery + bootstrap + некоторые другие небольшие сторонние библиотеки), используя Browserify + Rollup + Minify + GZIP, но даже с этим размером все еще требуется некоторое время, чтобы загрузить пакет, а затем началось начальное время загрузки для отражения и zone.js, что означает может занять до 4-5 секунд на более медленных устройствах (мобильных телефонах) для загрузки сайта.

Хотя я понимаю, что это неизбежно (на данный момент, по крайней мере), есть ли способ показать ход загрузки для начальной загрузки в процентах от загрузки download/reflection/zone.js?

Большинство примеров здесь:

<body>
   <my-app>Loading...</my-app>
</body>

Что работает, а Loading... может быть заменен счетчиком или любым настраиваемым шаблоном, который можно выбрать, но есть ли способ получить реальный прогресс значимым образом?

То, что я ищу, - это что-то вроде Gmail загрузки прогресса, который является фактическим индикатором выполнения с min/max, а не некоторым неопределенным счетчиком, чтобы пользователи могли иметь некоторую форму указания относительно того, сколько времени им нужно будет ждать для загрузки сайта.

Большое спасибо заранее,

Обновление (24-Oct-2016)

Я начал использовать NGC для компиляции вовремя (https://angular.io/docs/ts/latest/cookbook/aot-compiler.html), которая немного ускорилась ( хотя размер пакета увеличился до ~ 500 тыс. фунтов стерлингов, но он по-прежнему занимает ~ 300 мс, чтобы загрузить веб-сайт после того, как все было загружено.

В идеале, я хотел бы иметь возможность перехватывать процесс загрузки и загрузки, исследовать их статус (например, 230kb/500kb, загруженный или 10% полного построения модуля), а затем загружать индикатор выполнения и строку состояния что на самом деле дает некоторые указания пользователю, что именно они ждут.

В настоящее время я загружаю минимальный CSS для индикатора выполнения, показываю его, а затем загружаю все Angular вещи по порядку функции onLoad, и пока он намного более плавный, чем раньше, он все еще не очевиден сколько времени пользователю придется ждать - от половины до нескольких секунд в зависимости от подключения к Интернету и возможностей устройства.

4b9b3361

Ответ 1

Я не уверен в отношении /zone.js, но для загрузки мы можем следить за этим

<body onload="showApp()">
    <div class="progress-bar" id="loadingContainer"></div>
    <my-app style="display: none"><my-app>
</body>

showApp() {
    document.getElementById('loadingContainer').style.display = "none";
    document.getElementsByTagName('my-app')[0].style.display = null;
}

Ответ 2

Вы можете попробовать добавить второй script в свой index.html, который затем загрузит все ваши другие файлы (как это делает index.html). Тогда у вас будет куча запросов AJAX для ваших файлов и их можно добавить в DOM. Чтобы отслеживать прогресс, вы можете попробовать использовать HTTP HEAD-запрос с заголовком Content-Length.