7. Сократить CSS-классы
Замена в CSS
1. Собрать все CSS в один файл.
2. Заменить имена классов.
3. Сохранить спиcок замен:
{ 'block__element_modificator': 'aBc' }01.
7
11. Убираем лишний CSS
Что нужно сделать?
1. Основная задача:
Удалить лишние правила для одиночных классов, id и тегов.
2. Задача со звездочкой:
Удалить несуществующие комбинации: .class1 .class2 {} .
11
12. Убираем лишний CSS
Парсим HTML
1. Понять структуру HTML для каждой страницы с учетом
состояний (авторизован, неавторизован, акции, попапы).
2. Получить список классов, id и тегов. Лучше в виде дерева.
12
13. Убираем лишний CSS
Парсим JavaScript
1. Понимаем по JS как он может менять наш HTML:
Добавление классов, добавление элементов, и т. д.
2. Дополняем наше дерево возможными состояниями.
13
15. Убираем лишний JavaScript
1. Удалить то, что не касается DOM: переменные, функции, и т. д.
2. Удалить то, что касается DOM:
1. Найти какие функции и методы влияют на DOM.
2. Найти может ли этот DOM быть на странице.
3. Удалить ненужное.
15
17. Отдельная сборка
для лендинга
1. Научить наши инструменты понимать что такое страница.
2. Построить HTML-дерево страницы во всех состояниях.
3. Найти какой JavaScript может её изменять.
4. Найти CSS и JavaScript который нужен для этой страницы.
17
28. longName
var a = 10;
b
Пример удаления кода
До UglifyJS:
function ( ) {
return longName;
}
После UglifyJS:
function ( ) { return b; }
01.
02.
03.
04.
01.
28
33. style.css
data.json
kitten.png
Webpack и require
Подгрузит в шапку, добавит в граф пути из url() и @import :
var style = require(' ');
Подгрузит как JavaScript объект:
var json = require(' ');
Положит в папку для готовых ассетов, отдаст путь:
var img = require(' ');
01.
01.
01.
33
45. К чему все это?
1. Нет отдельных html, css, js – все тесно взаимосвязано и влияет
друг на друга.
2. В процессе сборки все в JS – мы можем использовать кучу
автоматических оптимизаций.
3. Граф зависимостей – позволяет собирать только нужное
и ничего не терять.
4. Локальное пространство имен – нет глобальных переменных
и классов, все делает автоматика, можно не думать
о конфликтах.
45
46. Ближайшие точки для
развития
1. Интеграция с IDE.
2. Рендеринг на сервере:
1. Шаблоны отделены от стилей и логики.
2. JS-шаблонизаторы и инструменты сборки сейчас сильно
заточены под SPA.
3. Огромная куча других инструментов для оптимизации и
анализа.
46
47. Вопросы?
Я всегда рад поговорить с кем-ниубудь про этих штуки.
• Подходите обсуждать на afterparty.
• Пишите в:
• Twitter: @iadramelk
• Facebook: @iadramelk
47