Что такое Angular CLI Budgets?
Бюджеты - одна из менее известных функций Angular CLI. Это довольно маленькая, но очень интересная функция!
По мере роста функциональности приложений они также увеличиваются в размерах. Бюджеты - это функция в Angular CLI, которая позволяет вам устанавливать пороговые значения бюджета в вашей конфигурации, чтобы гарантировать, что части вашего приложения остаются в установленных вами границах - Официальная документация
Или, другими словами, мы можем описать наше приложение Angular как набор скомпилированных файлов JavaScript, называемых пакетами, которые создаются в процессе сборки. Угловые бюджеты позволяют нам настраивать ожидаемые размеры этих пакетов. Более того, мы можем настроить пороги для условий, когда мы хотим получить предупреждение или даже не выполнить сборку с ошибкой, если размер пакета выходит из-под контроля!
Как определить бюджет?
Угловые бюджеты определены в файле angular.json. Бюджеты определяются для каждого проекта, что имеет смысл, поскольку у каждого приложения в рабочей области разные потребности.
С прагматической точки зрения имеет смысл только определять бюджеты для производственных сборок. Сборка Prod создает пакеты с «истинным размером» после применения всех оптимизаций, таких как «встряхивание дерева» и минимизация кода.
Ой, ошибка сборки! Превышен максимальный размер пакета. Это отличный сигнал, который говорит нам, что что-то пошло не так ...
- Возможно, мы поэкспериментировали с нашей функцией и не очистили должным образом
- Наши инструменты могут пойти не так и выполнить автоматический импорт неправильно, или мы выберем плохой элемент из предложенного списка импорта.
- Мы можем импортировать данные из ленивых модулей в неподходящие места
- Наша новая функция просто очень большая и не вписывается в существующие бюджеты
Первый подход: сжаты ли ваши файлы в сжатом виде?
Вообще говоря, размер gzip-файла составляет лишь около 20% от размера исходного файла, что может значительно сократить время начальной загрузки вашего приложения. Чтобы проверить, сжали ли вы файлы с помощью gzip, просто откройте вкладку сети в консоли разработчика. Если в «Заголовках ответа» вы увидите «Content-Encoding: gzip», то все готово.
Как сжать?
Если вы размещаете свое приложение Angular на большинстве облачных платформ или CDN, вам не следует беспокоиться об этой проблеме, поскольку они, вероятно, сделали это за вас. Однако, если у вас есть собственный сервер (например, NodeJS + expressJS), обслуживающий ваше приложение Angular, обязательно проверьте, заархивированы ли файлы. Ниже приведен пример сжатия статических ресурсов в приложении NodeJS + expressJS. Вы не можете себе представить, что это мертвое простое «сжатие» промежуточного программного обеспечения уменьшит размер вашего пакета с 2,21 МБ до 495,13 КБ.
const compression = require('compression')
const express = require('express')
const app = express()
app.use(compression())
Второй подход: проанализируйте свой пакет Angular
Если размер вашего пакета становится слишком большим, вы можете проанализировать его, потому что вы, возможно, использовали неподходящий сторонний пакет большого размера или вы забыли удалить какой-то пакет, если вы его больше не используете. У Webpack есть замечательная функция, которая дает нам визуальное представление о составе пакета webpack.
Получить этот график очень просто.
npm install -g webpack-bundle-analyzer
- В приложении Angular запустите
ng build --stats-json
(не используйте флаг --prod
). Включив, --stats-json
вы получите дополнительный файл stats.json
- Наконец, запустите,
webpack-bundle-analyzer ./dist/stats.json
и в вашем браузере появится страница по адресу localhost: 8888. Получайте удовольствие от этого.
ссылка 1: Как бюджеты Angular CLI спасли мне день и как они могут сэкономить ваш
ссылка 2: Оптимизировать размер пакета Angular за 4 шага