Как стать автором
Обновить

Комментарии 3

Если вычесть рекламное пропихивание Bit, то в статье из интересного остаётся только многообещающий заголовок
7 принципов разработки качественных CDD-ориентированных библиотек

… под которым на самом деле не рассматривается никаких принципов, а только лишь задаются много вопросов. Пусть даже и правильных вопросов, но во-первых, этот список важных вопросов НЕ исчерпывающий, а во-вторых, это вопросы, а не «принципы».

Ну и на мой опыт в любой компонентной (не только в этих ваших фронтэндах) системе главное, без чего эта система никогда не взлетит на хоть сколько-нибудь сложных случаях — это взаимодействие между компонентами. Взаимодействие — это та часть, куда вытягивается вся оставшаяся сложность разбиваемой на кусочки системы (и сложности всегда остаётся очень большая часть, не надо думать, что декомпозиция её внезапно куда-то убирает). Именно поэтому все эти Bit и прочие идеи а-ля «давайте сделаем сайт куда каждый будет пихать свои очень уникальные (нет) кнопочки» — они интересны только лишь номинально. Мало кто задумывается над действительно важными вещами: как этими вашими компонентами командовать? Как убедиться в том, что они не трогают друг друга и не вылезают за рамки своей области? Как они будут сообщать о том, что у них там происходит? Сколько еще, наконец, можно терпеть 20 обёрток друг над другом, каждая отламывающая от пропсов свой маленький кусочек данных и тащащая его в норку, пока программист молится на то, чтоб все 20 обёрток действительно бы передали его данные вниз по дереву ожидаемым и корректным образом?

Вот эти вот вещи — очень интересны. Сайт с миллионами вариаций кнопочек — неа.
Возможно, для улучшения отделения компонентов от стилей стоит использовать библиотеки, реализующие технологию CSS in JS?
Я может слегка отстал от жизни, но разве «CSS in JS» не делает ровно наоборот, прибивая стили к компоненту намертво?
CSS in JS уводит стили в код, и соответственно ими можно без проблем управлять с уровня кода — нужно тебе розовенькую кнопочку с пупырышками — пишешь это в конструкторе кнопочки (или в пропсах, если речь по реакт какой-нибудь), и вуаля.

Но за это придётся расплачиваться тормозами в стилях, потому что да, с точки зрения всего документа — у тебя будут стили, прибиваемые через JS намертво к каждому конкретному элементу.

Ну а что делать — вменяемой модульности в CSS нет. Лучшее, что смогли придумать — это БЭМ, да и он мягко говоря не без недостатков, не говоря уж про неудобство пользования. CSS Modules вот идеологически куда лучше, но дают только изоляцию, а не модульность (нельзя перекрыть стили с верхнего уровня, т.е. вообще нельзя влезть в модуль снаружи оговоренным методом, их просто не предусмотрено).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий