Время от времени мы видим этот вопрос всплывающим в Twitter, Reddit или StackOverflow. Практически каждый, кто когда-либо работал с Sass, в какой-то момент спрашивал себя, какой из них выбрать: Compass или Bourbon ?
На случай, если я уже потерял некоторых из вас, Compass и Bourbon являются фреймворками для Sass. Sass, как вы, наверное, знаете, модный препроцессор CSS, верно? Ладно. Точно так же, как вы помещаете jQuery, Backbone или что-либо поверх JavaScript, вы можете использовать инфраструктуру вместо Sass, чтобы помочь в работе.
В сегодняшней статье я хотел бы высказать свое мнение по этой теме. Но сначала позвольте мне представить тему с небольшой историей.
история
Compass описывает себя как среду разработки CSS для Sass . Он поддерживается Крисом Эппштейном , одним из двух разработчиков Sass (версия для Ruby). Compass наполовину Ruby и наполовину Sass, и предоставляет множество миксов и набор инструментов для Sass. Подробнее об этом позже.
С другой стороны, Бурбон построен с Sass для Sass замечательной командой из Thoughtbot . Согласно домашней странице проекта, Бурбон больше похож на библиотеку, чем на структуру; простая и легкая библиотека миксинов для Sass .
Итак, с одной стороны, у нас есть среда Ruby / Sass, а с другой — библиотека Sass. Может быть, совсем по другому?
Примеси
Когда вы спросите пользователя Compass / Bourbon, для чего он использует этот инструмент, высоки шансы, что он скажет вам: кросс-браузерная совместимость . Ладно, может, он так не скажет, но идея та же. И Compass, и Bourbon предоставляют огромную коллекцию миксинов для обработки функций CSS3, поэтому вам не нужно иметь дело с префиксами вендоров или хакерами CSS.
// Compass
el {
@include box-sizing(border-box);
}
// Bourbon
el {
@include box-sizing(border-box);
}
// Doh. Same API. Awesome!
Фактически, Compass и Bourbon используют один и тот же синтаксис для большинства миксинов, что делает переход с Compass на Bourbon или с Bourbon на Compass довольно простым.
Хотя между обоими инструментами есть одна важная вещь: начиная с Compass 1.0 (выпущенного с Sass 3.3), Compass напрямую извлекает данные из « Могу ли я использовать…» , что означает, что он (почти) всегда будет соответствовать префиксам поставщиков, в то время как действительность Bourbon, как этого письма, зависит от обновлений сопровождающих.
Примечание: если вы используете Autoprefixer для добавления префиксов к свойствам вашего поставщика, этот раздел не будет иметь для вас большого значения.
Типография
И Compass, и Bourbon предоставляют некоторые типографики, переменные и функции. Компас поставляется с целым модулем вертикального ритма, включающим множество переменных и несколько миксинов.
// Compass
$base-font-size: 16px;
$base-line-height: 1.35;
$rhythm-unit: em;
element {
@include adjust-font-size-to(42px);
}
element {
font-size: 2.625em;
line-height: 1.06071em;
}
Compass может даже иметь дело с rem
px
$rhythm-unit
rem
em
Это довольно мило. Существует множество вариантов, поэтому, если вы являетесь поклонником типографии, Compass вас покроет.
Бурбон немного менее перегружен типографскими функциями, но все же предоставляет некоторые хорошие функции для начала. Вы можете не только преобразовать пиксели в em
rem
golden-ratio()
и modular-scale()
. Хотя они не связаны напрямую с типографикой, они пригодятся при разработке вертикального ритма документа.
Фактически, Thoughtbot решил заняться проблемами типографики в другом проекте (который может использоваться вместе с Бурбоном, конечно) под названием Bitters . Подробнее об этом в конце статьи.
Сетки
Что такое CSS-фреймворк без грид-системы? ПРАВО? Ладно.
Compass раньше поставлялся с Blueprint Grid (который, насколько я знаю, не имеет ничего общего с довольно старой CSS-фреймворком под названием Blueprint ). При этом, План Компаса действительно недостаточно используется. Из всех знакомых мне людей, которые используют Compass, только один когда-либо пробовал Blueprint. Он настолько недооценен, что Крис Эппштейн решил удалить его из Compass, начиная с версии 1.0.0 (соответствует Sass 3.3).
Тем временем Bourbon предлагает несколько миксинов, которые помогут вам построить собственную сетку. Существуют функции flex-*
(которые не имеют ничего общего с Flexbox), а также grid-width()
. На самом деле, Thoughtbot имеет свою собственную систему сетки за пределами Бурбона под названием Neat , которая описывает себя как облегченную семантическую структуру сетки для Sass и Bourbon . Таким образом, сам Бурбон не включает в себя систему сетки, вы можете использовать Neat.
Короче говоря, если вам нужна сеточная система, тесно связанная с вашей средой Sass, я предлагаю вам использовать Bourbon + Neat. Они построены одними и теми же людьми с одинаковыми идеями. Это как две части одной головоломки (легкая головоломка, ты должен признать).
Помощники
В рамках Sass интересно то, что они часто предоставляют помощников . Помощники — это предопределенные правила CSS, которые можно использовать непосредственно в таблицах стилей для экономии времени.
Например, Compass предоставляет помощника для очистки с плавающей точкой (включая несколько различных способов сделать это), несколько CSS-хаков для старых версий Internet Explorer, сброс настроек (с различными параметрами), некоторые методы замены изображений и многое другое .
Бурбон называет эти дополнения помощников, но предоставляет немного меньше помощников, чем Compass. При этом Thoughtbot включает в себя множество помощников в Bitters, стороннем проекте, который хорошо сочетается с Bourbon.
Спрайты
Попробуйте спросить пользователя Compass, почему он все еще использует эту библиотеку спустя месяцы или годы; Могу поспорить, он расскажет вам о построителе спрайтов. Это то, для чего Компас действительно хорош. Поскольку он частично построен в Ruby, Compass может делать довольно интересные вещи с файловой системой. Одной из таких вещей является создание спрайтов на основе папки изображений. Насколько это круто?
// Compass simple API to build sprites
@import "icon/*.png";
@include all-icon-sprites;
Он не только дает возможность автоматически генерировать спрайты, но также предоставляет несколько удобных функций для доступа к данным файла изображения внутри ваших таблиц стилей, таких как image-width()
image-height()
inline-image()
// Compass functions accessing file system
.logo {
$image: "path/to/my/logo.png";
width: image-width($image);
height: image-height($image);
background: inline-image($image) no-repeat;
}
Поскольку Bourbon построен только в Sass, он не может получить доступ к файловой системе, поэтому он не предоставляет ничего подобного. Поэтому, если вам нужен способ динамического создания файлов спрайтов, и вы не запускаете такой исполнитель задач, как Grunt, Gulp или Ant, тогда выбор здесь очевиден.
резюмировать
Для быстрого ознакомления, вот таблица, которая суммирует то, что я обсуждал.
Компас | бурбон | |
---|---|---|
Приставки | да (из я могу использовать … ) | Ага |
Типография | хорошо | достойный (хорошо с биттерами) |
сетка | нет | с аккуратным |
Помощники | Ага | да + биттер |
Спрайты | Ага | нет |
сообщество | отлично | очень хорошо |
Вес | тяжелый | легкий |
Последние мысли
Итак, в конце концов: компас или бурбон?
Если вы спросите меня: ни один . Я был давним пользователем Compass до недавнего времени, когда я бросил его из-за отсутствия использования. Теперь я предпочитаю добавлять свои собственные инструменты в проект Sass, а не включать целый фреймворк. Но это только я. Я думаю, что в большинстве случаев было бы лучше использовать фреймворк, по крайней мере, для больших проектов.
Теперь есть несколько критериев, которые будут иметь значение при выборе, но я думаю, что первое, что вы должны задать себе: нужны ли мне функции, связанные с изображениями (размеры изображений, построитель спрайтов и т. Д.)?
Компас удивителен для этого, но замедляет его. Так медленно … Так что, если тебе это не нужно, тогда иди к Бурбону. Это невероятно быстро, так как в основном это всего лишь куча миксинов Sass, которые делают вещи Sass в ваших таблицах стилей Sass.
Кроме того, если вы решите использовать Bourbon, я бы порекомендовал использовать другие проекты Thoughtbot: Neat в качестве системы сетки, Bitters в качестве базовой линии (типографика, переменные, темы) и почему бы даже не Refills, который в принципе является конкурентоспособной альтернативой Bootstrap, предоставляя много компонентов, готовых к использованию в вашем проекте.