У меня есть простое приложение, инициализированное angular-cli
.
Он отображает несколько страниц, относящихся к 3 маршрутам. У меня 3 компонента. На одной из этих страниц я использую lodash
модули HTTP и Angular 2 для получения некоторых данных (используя RxJS Observable
s map
и subscribe
). Я отображаю эти элементы с помощью простого файла *ngFor
.
Но, несмотря на то, что мое приложение действительно простое, я получаю огромный (на мой взгляд) пакет и карты. Я говорю не о версиях gzip, а о размере перед сжатием. Этот вопрос является всего лишь запросом общих рекомендаций.
Некоторые результаты тестов:
нг построить
Хеш: 8efac7d6208adb8641c1 Время: 10129 мс фрагмент {0} main.bundle.js, main.bundle.map (основной) 18,7 КБ {3} [начальный] [обработанный]
фрагмент {1} styles.bundle.css, styles.bundle.map, styles.bundle.map (стили) 155 КБ {4} [начальный] [обработанный]
фрагмент {2} scripts.bundle.js, scripts.bundle.map (скрипты) 128 КБ {4} [начальный] [обработанный]
фрагмент {3} vendor.bundle.js, vendor.bundle.map (vendor) 3,96 МБ [начальный] [обработанный]
фрагмент {4} inline.bundle.js, inline.bundle.map (встроенный) 0 байт [запись] [обработано]
Подождите: 10- мегабайтный пакет от поставщика для такого простого приложения?
ng build --prod
Хеш: 09a5f095e33b2980e7cc Время: 23455 мс фрагмент {0} main.6273b0f04a07a1c2ad6c.bundle.js, main.6273b0f04a07a1c2ad6c.bundle.map (main) 18,3 КБ {3} [начальный] [визуализировано]
фрагмент {1} styles.bfdaa4d8a4eb2d0cb019.bundle.css, styles.bfdaa4d8a4eb2d0cb019.bundle.map, styles.bfdaa4d8a4eb2d0cb019.bundle.map (стили) начальный 154 КБ [обработано}
фрагмент {2} scripts.c5b720a078e5464ec211.bundle.js, scripts.c5b720a078e5464ec211.bundle.map (скрипты) 128 КБ {4} [начальный] [визуализированный]
фрагмент {3} vendor.07af2467307e17d85438.bundle.js, vendor.07af2467307e17d85438.bundle.map (vendor) 3,96 МБ [начальный] [обработанный]
фрагмент {4} inline.a345391d459797f81820.bundle.js, inline.a345391d459797f81820.bundle.map (встроенный) 0 байт [запись] [обработано]
Подождите еще раз: такой же размер пакета у производителя для prod?
ng build --prod --aot
Хеш: 517e4425ff872bbe3e5b Время: 22856 мс фрагмент {0} main.95eadabace554e3c2b43.bundle.js, main.95eadabace554e3c2b43.bundle.map (main) 130 КБ {3} [начальный] [визуализировано]
фрагмент {1} styles.e53a388ae1dd2b7f5434.bundle.css, styles.e53a388ae1dd2b7f5434.bundle.map, styles.e53a388ae1dd2b7f5434.bundle.map (стили) 154 КБ {4} [начальный] [визуализированный]
фрагмент {2} scripts.e5c2c90547f3168a7564.bundle.js, scripts.e5c2c90547f3168a7564.bundle.map (скрипты) 128 КБ {4} [начальный] [обработанный]
фрагмент {3} vendor.41a6c1f57136df286f14.bundle.js, vendor.41a6c1f57136df286f14.bundle.map (vendor) 2,75 МБ [начальный] [обработанный]
фрагмент {4} inline.97c0403c57a46c6a7920.bundle.js, inline.97c0403c57a46c6a7920.bundle.map (встроенный) 0 байт [запись] [визуализировано]
ng build --aot
Хеш: 040cc91df4df5ffc3c3f Время: 11011 мс фрагмент {0} main.bundle.js, main.bundle.map (основной) 130 КБ {3} [начальный] [обработанный]
фрагмент {1} styles.bundle.css, styles.bundle.map, styles.bundle.map (стили) 155 КБ {4} [начальный] [обработанный]
фрагмент {2} scripts.bundle.js, scripts.bundle.map (скрипты) 128 КБ {4} [начальный] [обработанный]
фрагмент {3} vendor.bundle.js, vendor.bundle.map (vendor) 2,75 МБ [начальный] [обработанный]
фрагмент {4} inline.bundle.js, inline.bundle.map (встроенный) 0 байт [запись] [обработано]
Итак, несколько вопросов по развертыванию моего приложения на продукте:
- Почему пакеты поставщиков такие огромные?
- Правильно ли используется дрожание дерева
angular-cli
? - Как улучшить размер этого пакета?
- Требуются ли файлы .map?
- Включены ли в комплекты функции тестирования? Мне они не нужны в прод.
- Общий вопрос: какие инструменты рекомендуются для использования в продуктах? Может быть
angular-cli
(использование Webpack в фоновом режиме) не лучший вариант? Можем ли мы сделать лучше?
Я просмотрел много обсуждений по Stack Overflow, но не нашел ни одного общего вопроса.