Почему я не использую препроцессоры

Август 11, 2016 ||  css , translation ||  комментарии

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

Когда препроцессоры впервые вошли в моду я таки попробовал пользоваться ими. И потом, каждые несколько лет, поскольку на меня давили и тыкали, я пробовал их опять и давал себе шанс полюбить. Но для меня препроцессоры всегда виделись как нечто что должно решать какие то проблемы. Но фишка в том что я не считаю проблемы которые пытаются решить препроцессоры реальными проблемами. Размеры сайта не имеют значения, то ли это маленький сайт с несколькими статическими страницами, то ли это огромезный корпоративный внутренний сайт. Я просто напросто никогда не чувствовал необходимость в миксинах, вложенности или расширениях (extends).

Вот вам причины:

  • Я не считаю "проблемы" которые пытаются решить препроцессоры достаточно серьезными, то бишь для меня это решение еще хуже чем оригинальная проблема.
  • Я хочу иметь абсолютный контроль над моим CSS, что предполагает что я работаю с ним руками, вижу буквально то что посылается браузеру (ну само собой до сжатия). Если это означает видеть многократное повтороение одних и тех же правил или вендорных префиксов, то ок, пусть будет так. Как по мне, то сырой CSS гораздо более понятный и удобный чем скучный черный ящик псевдо CSS.
  • Я не хочу учить и зависеть от какого то не стандартного синтаксиса в который я превращаю CSS, еще и требующий компиляции для того чтобы браузер его понял. Плюс я не хочу этих проблем для моих коллег.
  • Я хочу чтобы мой исходный CSS можно было выкладывать на сайт, даже в несжатом виде. Если к примеру по какой то причине компиляция не работает (скажем неопубликованный Npm модуль). В случае спешки я могу залить на сайт мой исходный CSS. Скорость сайта может слегка пострадать но это лучше чем поломаный CSS.
  • Я не хочу ждать пока мой CSS скомпилируется чтобы увидеть результат в браузере. Время обработки может варьироваться от незаметного до раздражающего. В любом случае это не быстрее чем время нужное для переключения на браузер и перезагрузки.

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

Несмотря на это все, то что я не использую препроцессоры не означает что я не использую процессоры. Разница, как я ее вижу, в том что во втором случае мой CSS не нуждается в компиляции для того чтобы браузер его понял, и это то чего я стараюсь избегать.

Я использую PostCSS (вместе с плагинами, включая один который я написал сам) и CSSComb как вспомогательные инструменты для решения вещей типа:

  • сортировка декларация и исправление ошибок при помощи CSSComb
  • автоматическая вставка вендорных префиксов там где они нужны или удаление там где нет
  • вставка запасных решений для некоторых свойств
  • проверка синтаксиса CSS (linting)

Я настроил CSSComb и PostCSS для работы с исходным CSS и я всегда вижу результат. Никаких черных ящиков. Сохраняю файл, перегружаю браузер мгновенно, никаких компиляций, все правки в CSS косметические, вендорные префиксы вставляются один раз. Эти инструменты избавляют меня от лишнего набора плюс поддерживают строгий стиль кодинга. Это все, это мой тип CSS процессинга.

comments powered by Disqus