Статьи

В чем разница между Sass и SCSS?

Sass или SCSS

Это обновленная версия статьи, первоначально опубликованной 28 апреля 2014 года.

Я много писал о Sass, но некоторые комментарии, которые я получил, дали понять, что не все точно знают, на что ссылается Sass. Вот немного ясности:

Когда мы говорим о Sass , мы обычно имеем в виду препроцессор и язык в целом. Мы скажем, например, «мы используем Sass» или «вот миксин Sass». Между тем, Sass (препроцессор) допускает два разных синтаксиса:

  • Sass , также известный как синтаксис с отступом
  • SCSS , CSS-подобный синтаксис

История Sass

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

// Variable !primary-color= hotpink // Mixin =border-radius(!radius) -webkit-border-radius= !radius -moz-border-radius= !radius border-radius= !radius .my-element color= !primary-color width= 100% overflow= hidden .my-other-element +border-radius(5px) 

Как вы можете видеть, это довольно значительное изменение по сравнению с обычным CSS! Даже если вы являетесь пользователем Sass (препроцессора), вы можете видеть, что это сильно отличается от того, к чему мы привыкли. Знак переменной есть ! а не $ , знак присваивания = а не : Довольно странно.

Но так выглядел Sass до тех пор, пока в мае 2010 года не появилась версия 3.0, в которой был введен новый синтаксис SCSS для Sassy CSS . Этот синтаксис нацелен на сокращение разрыва между Sass и CSS за счет использования удобного для CSS синтаксиса.

 // Variable $primary-color: hotpink; // Mixin @mixin border-radius($radius) { -webkit-border-radius: $radius; -moz-border-radius: $radius; border-radius: $radius; } .my-element { color: $primary-color; width: 100%; overflow: hidden; } .my-other-element { @include border-radius(5px); } 

SCSS определенно ближе к CSS, чем Sass. При этом сопровождающие Sass также работали над тем, чтобы сделать оба синтаксиса ближе друг к другу, перемещаясь ! (знак переменной) и = (знак присваивания) из отступного синтаксиса в $ и : из SCSS.

Теперь, когда вы начинаете новый проект, вы можете спросить, какой синтаксис вам следует использовать. Позвольте мне осветить путь и объяснить плюсы и минусы каждого синтаксиса.

Плюсы для Sass Indented Syntax

Хотя этот синтаксис может выглядеть странно, у него есть несколько интересных моментов. Прежде всего, он короче и проще для ввода . Нет больше скобок и точек с запятой, вам не нужны все эти вещи. Даже лучше! Нет необходимости в @mixin или @include , когда достаточно одного символа: = и + .

Также синтаксис Sass обеспечивает чистые стандарты кодирования , полагаясь на отступы. Поскольку неправильный отступ может нарушить всю .sass стилей .sass , он гарантирует, что код .sass будет чистым и хорошо отформатированным. Есть один способ написания кода Sass: хороший способ.

Но будьте осторожны! Отступ означает что-то в Sass. Отступ в селекторе означает, что он вложен в предыдущий селектор. Например:

 .element-a color: hotpink .element-b float: left 

… Выведет следующий CSS:

 .element-a { color: hotpink; } .element-a .element-b { float: left; } 

Простой факт .element-b один уровень вправо означает, что он является потомком .element-a , изменяя полученный CSS. Будьте очень осторожны со своими отступами!

Как и в сторону, я чувствую, как синтаксис отступа на основе, скорее всего, подойдет команда Рубин / Python более чем команда PHP / Java (хотя это спорно, и я хотел бы услышать мнения об обратном).

Преимущества синтаксиса SCSS

Для начала, он полностью совместим с CSS . Это означает, что вы можете переименовать файл CSS в .scss и он будет просто работать . Обеспечение полной совместимости SCSS с CSS всегда было приоритетом для разработчиков Sass с момента выпуска SCSS, и, на мой взгляд, это большое дело. Более того, они стараются как можно ближе придерживаться того, что может стать допустимым синтаксисом CSS в будущем (отсюда и @directives ).

Поскольку SCSS совместим с CSS, это означает, что практически нет кривой обучения . Синтаксис уже известен: в конце концов, это просто CSS с несколькими дополнениями. Это важно при работе с неопытными разработчиками: они смогут быстро начать кодирование, не зная в первую очередь о Sass.

Более того, его легче читать, потому что это действительно имеет смысл. Когда вы читаете @mixin , вы знаете, что это объявление mixin; когда вы видите @include , вы вызываете миксин. Это не делает никаких ярлыков, и все имеет смысл, когда зачитывается вслух.

Кроме того, большинство существующих инструментов, плагинов и демоверсий для Sass разработаны с использованием синтаксиса SCSS. Со временем этот синтаксис приобретает первостепенное значение и становится выбором по умолчанию, в основном по указанным выше причинам.

Последние мысли

Выбор за вами, но если у вас нет действительно веских причин для кодирования с использованием отступного синтаксиса, я настоятельно рекомендую использовать SCSS поверх Sass. Это не только проще, но и удобнее.

Однажды я сам попробовал использовать синтаксис с отступом, и он мне понравился. Мне понравилось, насколько это было коротко и легко. На самом деле я собирался переместить всю кодовую базу в Sass на работе, прежде чем передумать в последнюю минуту. Я благодарю своего прошлого за то, что он остановил этот шаг, потому что было бы очень трудно работать с некоторыми из наших инструментов, если бы мы использовали отступный синтаксис.

Также обратите внимание, что Sass никогда не пишется в верхнем регистре, независимо от того, говорите ли вы о языке или синтаксисе. Между тем, SCSS всегда в верхнем регистре. Нужно напоминание? SassnotSASS.com на помощь!