Рубрики
Без рубрики

Уменьшение размера пакета CSS 70%, сокращая названия классов и используя выделение области

Gajus Kuizinas Уменьшает размер пакета CSS 70%, сокращая названия классов и с использованием Scope IsolationJust, как Google, делает ITAT начало этого года, у меня есть консультирование и установлено для создания GO2CINEMA – быстрого, простого и безопасного способа бронировать билеты в кинотеатр в СОЕДИНЕННОЕ КОРОЛЕВСТВО. у меня есть

Автор оригинала: FreeCodeCamp Community Member.

Gajus kuizinas.

Так же, как Google делает это

В начале этого года я бросил консультирование и отправился построить Go2cinema – Быстрый, простой и безопасный способ забронировать билеты в кино в Великобритании. Я сделал великолепную работу, делая это Быстрый, простой и безопасный Отказ Где-то по пути я одержим критически важной оптимизацией пути рендеринга ⚡️.

Я решил предварительно рендеринг HTML, используя ūsus Отказ ūsus делает HTML из приложений одной страницы (SPA) и Входные данные CSS, используемые для визуализации страницы Отказ Однако я не любил встроить 70 кБ в каждый документ HTML, особенно Большая часть имена классов CSS.

Так же, как Google делает это

Вы когда-нибудь заглянули в исходный код https://www.google.com/ ? Первое, что вы заметите, так это то, что имена классов CSS не более, чем пару символов.

Но как?

Недостатки министерств CSS

Есть одно, что минификатор не может сделать – изменить имена селектора. Это связано с тем, что министерство CSS не контролирует выход HTML. Между тем имена CSS могут получить долго.

Если вы используете модули CSS, ваши модули CSS, вероятно, будут включать имя файла таблицы стилей, имя локального идентификатора и случайное хеш. Шаблон названия класса описан с использованием CSS-Loader местный язык Конфигурация, например [ИМЯ] ___ [LOCAL] ___ [HASHH: BASE64: 5] Отказ Поэтому сгенерированное имя класса будет выглядеть что-то вроде этого .Movieview ___ Фильм-титул ___ YVKVV ; Если вам нравятся описательные имена, он может получить намного дольше, например .Movieview ___ Фильм-описание-с-Сводка - абзац ___ YVKVV Отказ

Переименованные имена классов CSS при время компиляции

Однако, если вы используете WebPack и Babel-Plugin-React-CSS-модули тебе повезло? – Вы можете переименовать названия классов при время компиляции, используя C SS-Loader G Этлокалидента Конфигурация и эквивалентные Babel-Plugin-React-CSS-модули G EneryateCopedName конфигурация.

Прохладная вещь о GenerateCopedName Это тот же экземпляр функции может быть использован для процесса сборки Babel и WebPack:

Делать названия короткие

Благодаря Babel-Plugin-React-CSS-модули и CSS-Loader Обмен одной и той же логикой для генерации названий классов CSS мы можем изменить имена классов на все, что нам нравится, даже случайное хеш. Однако вместо случайных хэш я хотел, чтобы максимально возможные названия классов.

Чтобы сгенерировать самые короткие имена классов, я создал индекс имени класса и использовал инкстр Модуль для генерации инкрементных идентификаторов для каждой записи в индексе.

Это гарантирует короткие и уникальные имена классов. Теперь вместо .Movieview ___ Фильм-титул ___ YVKVV и .Movieview ___ Фильм-описание-с-Сводка - абзац ___ YVKVV Наши названия классов стали .a_a , .b_a , так далее.

Это уменьшило Go2cinema Размер комплекта CSS от 140 Kb до 53 КБ.

Использование выделения области для дальнейшего уменьшения размера расслоения

Есть веская причина, по которой я добавил _ В название класса CSS, отделяющее имя компонента и название локального идентификатора – различие полезно для минификации.

CSSO (CSS Minifier) имеет СКОРОЙ конфигурация. Сцены определяют списки названий классов, которые используются исключительно на некоторой разметке, то есть селекторы из разных областей не соответствуют одному и тому же элементу. Эта информация позволяет оптимизатором перемещать правила более агрессивными.

Использовать это, используйте CSSO-WebPack-Plugin Чтобы пост-процесс CSS Bundle:

Это уменьшило Go2cinema Размер комплекта CSS от 53 КБ до 47 КБ.

Стоит ли оно того?

Первый аргумент против такого заминирования заключается в том, что алгоритмы сжатия сделают это для вас. GO2CINEMA CSS BUNDLE сжимается с помощью Броти Алгоритм экономит всего 1 КБ по сравнению с исходным связью с именами длинных классов.

С другой стороны, настройка этой зачисления – одноразовая инвестиция, и это уменьшает размер документа, который должен быть проанализирован. Он имеет другие преимущества, такие как сдерживающие лопаты, которые полагаются на имена классов CSS для навигации или случайно совпадающих селекторов CSS-блокатора Черные списки Отказ

Между тем, вы можете увидеть демонстрацию этой минификации, используемую на страницах кино и места проведения GO2CINEMA, например,

Можете ли вы помочь мне с Go2Cinema?

Go2cinema мой ребенок. Я люблю работать над этим? Тем не менее, это мой первый запуск этого десятилетия, и есть много вещей, с которыми мне нужна помощь.

Если вы можете дать отзывы, консультации SEO, бизнес-консультации, знаете инвестору Angel, знаете кого-то, кто может написать статью о Go2cinema Сделайте твит, пригласите меня на конференцию, радиокуплений и т. Д. Или просто хотите выразить свою поддержку/любопытство и сказать «Привет!», напишите мне на Gajus@gajus.com или DM через Twitter, https://twitter.com/kuizinas Отказ

Вы любите читать, я люблю писать

Вы можете поддержать мои Работа с открытым исходным кодом И я пишу технические статьи через Купи мне кофе и Парреон Отказ У тебя будет моя вечная благодарность?