Обзоры, статьи, исследования



Фреймворк, сниппет или библиотека?


На написание этой статьи меня вдохновило обилие статей, посвящённых css- и другим фреймворкам.

В последнее время часто подымаются вопросы - использовать, или нет css-фреймворк, какой из них лучше, или всё же мастера пишут свой фреймворк... и т.д. и т.п. Пример подобных бурных обсуждений читаем на Хабре. Там же можно найти и список css-фреймворков.

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

Фреймворк (framework) в самом широком смысле обозначает простую концептуальную структуру, используемую для решения сложной проблемной задачи (по определению Википедии).
Сниппет (snippet) - небольшой фрагмент кода, который можно многократно использовать.

Давайте вместе подумаем - является ли создание каскадных стилей сайта сложной проблемной задачей? Да, безусловно - в случае соблюдения стандартов и одновременной кроссбраузерности, реализации сложного дизайнерского решения, сложности самого сайта (много различных функциональных разделов) и т.д.

И всё же, я думаю, говоря о создании стилей для сайта, сложно (да и вряд ли нужно) придумывать фреймворк, который в силу самого понятия подразумевает проработку всех возможных вариантов макета (что мы и видим в существующих фреймворках). Скорее, речь пойдёт именно о фрагментах кода, подходящий набор которых прекрасно можно использовать в любой комбинации для реализации различных решений.

Если говорить о таблицах стилей, то у меня, например, есть свой подход:

обнулить стили
разделить код на логические блоки - backgrounds, headings, header, menu, content, footer и т.д. Именно эти блоки затем и мигрируют из проекта в проект, безусловно видоизменяясь в соответствии с требованиями интерфейса страниц, ростом моих знаний и т.п.
выделить специфические свойства (свойства шрифта, такие как размеры, стиль написания и т.п.; различные отступы) и продумать единую концепцию именования - например, .f12 - класс, описывающий свойства шрифта в 12 пикселей
вместо написания всё новых классов в разрастающемся веб-приложении использовать комбинацию отдельных свойств - например,

- думаю, свойства являются очевидными и не требуют лишних комментариев - что важно как в командной работе, так и при повторном использовании кода.

А вообще, единственно важный принцип повторного использования кода как раз и состоит в наличии чёткой и простой концепции такого использования. Да, именно простого, а не умного. Простое всегда лучше умного и хитрого кода. А если уж и приходится мудрить - то обязательно задокументировать это в комментариях.

Также часто называют фреймворками и JavaScript библиотеки. К примеру, тот же jQuery называют часто фреймворком. Опять-таки, я думаю, что если понимать фреймворк как костяк веб-приложения, то jQuery и любая другая библиотека является именно библиотекой, а не чем-либо другим.