Его синтаксис отличается, и это главное за (или против, в зависимости от вашей перспективы).
Я постараюсь не повторять многое из того, что говорили другие, вы можете легко это погуглить, но вместо этого я хотел бы сказать пару вещей из моего опыта, используя оба, иногда даже в одном и том же проекте.
SASS pro
- cleaner - если вы работаете с Python, Ruby (вы даже можете писать реквизиты с символьным синтаксисом) или даже с миром CoffeeScript, это будет очень естественно для вас - написание миксинов, функций и вообще любых материалов многократного использования в
.sass
гораздо «легче» и читабельнее, чем в .scss
(субъективно).
SASS минусы
- чувствительно к пробелам (субъективно), я не возражаю против этого на других языках, но здесь, в CSS, это меня просто беспокоит (проблемы: копирование, табуляция против космической войны и т. Д.).
- нет встроенных правил (для меня это было нарушением игры), вы не можете сделать
body color: red
, как вы можете в .scss body {color: red}
- импорт материалов других поставщиков, копирование ванильных фрагментов CSS - не невозможно, но очень скучно через некоторое время. Решение состоит в том, чтобы либо иметь в своем проекте файлы
.scss
(вместе с файлами .sass
), либо преобразовать их в .sass
.
Кроме этого - они делают ту же работу.
Теперь мне нравится писать миксины и переменные в .sass
и код, который на самом деле будет компилироваться в CSS в .scss
, если это возможно (т.е. Visual Studio не поддерживает .sass
, но всякий раз, когда я работая над Rails-проектами, я обычно объединяю два из них, а не в один файл ofc).
В последнее время я рассматриваю возможность предоставления Stylus (для штатного препроцессора CSS), поскольку он позволяет комбинировать два синтаксиса в одном файле (среди некоторых других функций). Возможно, это не очень хорошее направление для команды, но если вы поддерживаете ее в одиночку - это нормально. На самом деле стилус наиболее гибок, когда речь идет о синтаксисе.
И, наконец, mixin для .scss
против .sass
синтаксического сравнения:
// SCSS
@mixin cover {
$color: red;
@for $i from 1 through 5 {
&.bg-cover#{$i} { background-color: adjust-hue($color, 15deg * $i) }
}
}
.wrapper { @include cover }
// SASS
=cover
$color: red
@for $i from 1 through 5
&.bg-cover#{$i}
background-color: adjust-hue($color, 15deg * $i)
.wrapper
+cover