Найти тему
Default Web development

Ускоряем работу FontAwesome

Многие при разработке сталкивались с такой технологией, как иконочные шрифты. Их идея в том, чтобы разным символам присвоить разные иконки. Таким образом, иконки могут быть любого размера, цвета. А браузер сразу скачивает весь набор и сохраняет в кеш.

До определенного момента, FontAwesome ничем не отличался от прочих иконочных шрифтов. Однако, с релизом 5ой версии, логика была полностью изменена. Шрифтовый вариант все еще доступен, но ему на замену пришла js библиотека.

Логика ее работы такова: в шапку дописываются все необходимые стили, далее подключается наблюдатель. Он следит за изменениями в DOM и, когда встречает элемент с классами fas, far, fab - подменяет их на svg иконки. Такой подход затратнее по ресурсам, однако позволяет гибко работать с иконками. Анимации, объединение иконок, произвольные трансформации, маскирование.

<i class="fas fa-times"></i>

Вот так выглядит иконка в коде. Позже, она подменяется SVG.

И все удобно и хорошо, пока этих иконок не становится слишком много. Особенно, если Вы AJAX-ом подгружаете большой список сущностей и FontAwesome начинает подставлять свои SVG.

Рассмотрим, как ускорить процесс и разгрузить браузер. На помощь приходит технология SVG Symbols.

-2

Идея такова: где-то в шапке сайта создаются svg, которым присваиваются некие id. Дальше, там где нужна иконка, создается svg с тегом use и указывается заданный ранее id. В итоге, FontAwesome рендерит только символы. Расходов мало, все работает быстрее. Но! Есть проблема со стилизацией. Иконки не имеют базовых размеров.

Назначаем некому классу .icon ширину, высоту и выравнивание. Тегу svg присваиваем этот класс. Проблему размера иконки победили.

-3

Альтернативой являются SVG Sprites.

-4

Логика такая - ссылаемся на файл-спрайт и указываем id иконки из набора. Никакого JS, svg иконка достаточно гибкая.

Если в Вашем приложении используется система сборки, например webpack, мы можем значительно уменьшить размер библиотеки.

-5

Здесь логика такая: импортируем библиотеку и наблюдателя. Далее, импортируем только те иконки, которые нам понадобятся.

Если посмотреть исходные коды иконок, легко добавить в набор свои.

Вот и все. Быстрый, гибкий FontAwesome в нашем приложении.