169 похожих чатов

Ребятки рассудите: если верстать на реакте по-дедовски, закладывая некоторые состояния

отображения (ну там открыт табчик или закрыт, активна кнопка/неактивна) путём добавления дополнительных классов к DOM-элементам используя БЭМ-методологию, это ОК или прошлый век и лучше юзать module.css и css in js?

40 ответов

7 просмотров

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

css-in-js оверкилл если то что вы делаете простой проект без дизайн системы или ее подобия, БЭМ это не дедовский способ, а вполне нормально, и тем не менее css модули мне кажутся лучшим решением для большинства задач это мое мнение.

Lastiqe-Adadurov Автор вопроса
Firstname Lastname
в реактах наших управлять видимостью надо из JSX, ...

Получается, что БЭМ-методология в корне не годится для реакта?

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

насчет active-не active — да, классами. да, css-modules или css-in-js

в модулях тяжелее запутаться как по мне. И легче искать потом через браузер

Lastiqe Adadurov
Получается, что БЭМ-методология в корне не годится...

ну в реакте ты можешь не забывать что у тебя есть блок и он задаёт margin для элементов)

Lastiqe Adadurov
Получается, что БЭМ-методология в корне не годится...

ну такое. зачем, когда есть css-modules или css-in-js. а насчет дебага чел загнул. в дев режиме имена классов остаются теми же, что в файле модуля + хэш. в проде имена выпиливаются

Lastiqe-Adadurov Автор вопроса
Alexandr
То, что ты в начале описал не зависит от того, как...

Модули вообще никак не стакаются с БЭМ. Ничто не стакается с БЭМ в принципе, т.к. эта система замкнута сама в себе и любые сторонние сущности напрочь рушат концепцию бэм, тем более модульный КСС

Lastiqe Adadurov
Модули вообще никак не стакаются с БЭМ. Ничто не с...

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

Lastiqe-Adadurov Автор вопроса
Alexandr
Ничего не рушат модули, разве что отпадает надобно...

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

Lastiqe Adadurov
Но это и создает путаннцу, плюс к этому концепция ...

По мне блоки очень хорошо ложатся на компоненты.

Lastiqe-Adadurov Автор вопроса
Alexandr
По мне блоки очень хорошо ложатся на компоненты.

Они ложатся В компоненты. В компоненте может быть любое кол-во блоков. а вот в блоке напротив не может быть что-то большее, чем блок. Сравнивать их, всё равно что сравнивать грузовик, и ящики, которые этот грузовик перевозит

Lastiqe Adadurov
Они ложатся В компоненты. В компоненте может быть ...

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

Lastiqe Adadurov
Они ложатся В компоненты. В компоненте может быть ...

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

Alexandr
Что когда?

когда можно делать элементы элементов?

Lastiqe-Adadurov Автор вопроса
Firstname Lastname
апи сделай нормальный, тогда не надо будет сравнив...

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

Lastiqe Adadurov
Ну это ж не значит, что надо верстать как мудак. П...

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

Nikolay Tolochnyy
когда можно делать элементы элементов?

Ну правильнее будет сказать не когда, а как, сейчас найду эту часть в доке

Lastiqe-Adadurov Автор вопроса
Firstname Lastname
если у тебя DRY прямо в крови, то можешь юзать мик...

переменные не решают проблему дублирования, ты просто будешь переписывать свойства по 100500 раз записывая переменные, вместо значений. А на счёт проектирования: организация CSS кода - это часть проектирования, при чём не самая последняя на фронте.

Lastiqe Adadurov
переменные не решают проблему дублирования, ты про...

если честно, я не понимаю концепцию то есть, условно у нас есть Button. внезапно, нам нужен Button с Icon. мы берем Button, добавляем ему startIcon, endIcon пропы, вешаем на них классы из модуля и все

Lastiqe-Adadurov Автор вопроса
Firstname Lastname
если у тебя DRY прямо в крови, то можешь юзать мик...

В идеале должны быть БЭМ-блоки с глобальной областью видимости и минимумом специфичности, которые можно использовать сразу в нескольких компонентах. Кнопки, инпуты, etc...

Lastiqe Adadurov
В идеале должны быть БЭМ-блоки с глобальной област...

ну это тебя уже в степь какую-то лютую понесло. ты создаешь одну и ту же вариацию Button с разными классами?

Lastiqe-Adadurov Автор вопроса
Firstname Lastname
если честно, я не понимаю концепцию то есть, услов...

А можно просто написать button button—red и кнопка будет красной, а потом добавить icon и там будет икнока

Lastiqe-Adadurov Автор вопроса
Nikolay Tolochnyy
а зачем тогда реакт?

А реакт не эту проблему решает

Nikolay Tolochnyy
когда можно делать элементы элементов?

В общем речь была о служебных блоках, не удалось найти почему-то кокретно как он пишется в доке, помню, что это делается примерно так <ul class='list'> <li class='list__item'> <a class='list__item-link'>link</a> </li> </ul> Но с реактом надобность и в таком в принципе отпадает, когда всё можно делать через композицию. https://ru.bem.info/methodology/quick-start/#%D0%92%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C-1

Alexandr
В общем речь была о служебных блоках, не удалось н...

или через рендер-проп и экспортом служебных компонентов

Firstname Lastname
или через рендер-проп и экспортом служебных компон...

Ну это я к тому, что если нормально писать компоненты, то там и не будет большой вложенности

Alexandr
В общем речь была о служебных блоках, не удалось н...

ну тут не элемент элемента, но мысль я понял, спасибо)

Alexandr
Ну это я к тому, что если нормально писать компоне...

ну вот в случае с Dialog хз, как по-другому сделать. там есть сам Dialog, DialogContent, DialogTitle, DialogActions. может, еще что-то

Lastiqe-Adadurov Автор вопроса
Alexandr
В общем речь была о служебных блоках, не удалось н...

В бэме допускается любая вложенность элементов, это в доке не первых страницах написано https://prnt.sc/v9cpxr

Nikolay Tolochnyy
ну тут не элемент элемента, но мысль я понял, спас...

Ну да, если прям элемент элемента надо создать, то стоит задуматься над тем, а не пора ли отдельный блок делать, как собственно и в реакте надо время от времени задумываться, а нельзя ли разбить один компонент на несколько

Lastiqe Adadurov
В бэме допускается любая вложенность элементов, эт...

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

Firstname Lastname
если честно, я не понимаю концепцию то есть, услов...

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

Lastiqe Adadurov
Получается, что БЭМ-методология в корне не годится...

это все субъективная хрень каждый вертит как хочет, делай так как удобнее тебе или команде

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта