Модули сайта против библиотечных модулей с БЭМ и SMACSS

Вот ситуация, с которой я часто сталкиваюсь с архитектурой CSS, использующей BEM/SMACSS. Я хотел бы посмотреть, как другие разработчики справляются с этим.

У вас есть библиотека CSS-модулей, которые вы используете на нескольких сайтах. Модули как .btn-group, .nav-tabs, так далее.

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

Итак, у вас есть код для этого "модуля сайта" в файле Sass/Less, и вы сохраняете его с другим кодом стиля для этого сайта, например стилями макета. Он не сохраняется с вашими "библиотечными модулями".

У меня вопрос: вы делаете что-нибудь, чтобы отличить "модуль сайта" от ваших "модулей библиотеки"?

2 ответа

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

Эта проблема решается с помощью уровней определения. Основная идея заключается в том, что вы можете разбивать блоки (даже части одних и тех же блоков) на разные слои, которые вы объединяете в проекте. Например, у вас может быть уровень библиотеки (или несколько библиотек) и уровень проекта, или это могут быть разные уровни в зависимости от среды: общие части для всех платформ и разные для настольных компьютеров и планшетов и так далее.

Смотрите http://bem.info/method/filesystem/ для более подробной информации.

Другие вопросы по тегам