🔥

Тред (Влад Шилов)


Если рассматривать различные микро-оптимизации веса бандла, то выделил бы следующие: Помимо классов, по возможности лучше не использовать и объекты, так как названия ключей в них обычно не минифицируются, а если используете, старайтесь делать ключи покороче. 👇

Вместо какого-нибудь { totalAmountOfPages: 1 } напишите { pageCount: 1 }. А еще лучше попробовать разбить объект на отдельные переменные: названия переменных отлично минифицируются.
notion image

Кстати, если ваша библиотека подразумевает настройку с помощью конфиг-объекта, то лучше сразу придумать названия ключей покороче. Потом поменять их без breaking changes будет нельзя.
notion image

Если в исходниках один код весит меньше другого, это не значит, что их минифицированные версии тоже. Простой пример: у нас в react-colorful есть функция clamp, которая работает на тернарниках.
notion image

Мне дважды предлагали заменить этот код на аналог с Math, так как он короче. Однако не учитывали, что минификация в корне меняет дело.
notion image

Всегда ищите более "короткий" способ. Даже если есть популярное bulletproof решение, подумайте над альтернативой. Например, для проверки, что клик был не мышкой, а пальцем, часто рекомендуют длинную проверку на TouchEvent, но я нашел для своих задач более короткий вариант.
notion image

Из области нано-оптимизаций: Скорее всего, ваш код будет отдаваться через gzip. Поэтому иногда разработчики пытаются подстроить итоговый код под алгоритм gzip.

Самое дикое, что я видел на эту тему — это сортировка строки с алфавитом в nanoid, чтобы gzip лучше сжал итоговый файл. Как видно на скриншоте, символы в строке пересортированы так, что в строке встречаются части названий методов. github.com/ai/nanoid/blob…
notion image