Size: a a a

2019 August 02

DS

Dmitry Schekotov in БЭМ
источник

SB

Sergey Belozyorcev in БЭМ
<a class='Link'>Ссылка</a>
<a class='Link Block-Elem'>Ссылка</a>


Какого цвета будет элемент при таком css:
.Block-Elem { color: red }
.Link { color: blue }


А какого при таком:
.Link { color: blue }
.Block-Elem { color: red }
источник

SB

Sergey Belozyorcev in БЭМ
Eugeniy World
Хм, чет не встречали такого ни разу 🙁
Я один раз сегодня схватил в проекте, но пока разбирался с кодом оформления страниц импорты при сборке в порядок пришли.
После чего задумался как этого избегать... :)
источник

SB

Sergey Belozyorcev in БЭМ
Я вот думаю... ESLint плагин на проверку порядка импортов (по алфовиту) решит ли это проблему?

// Block1
import { withSizeL } from '../Link/_size/Link_size_l'
import { withSizeM } from '../Link/_size/Link_size_m'

// Block2
import { withSizeM } from '../Link/_size/Link_size_m'
import { withSizeL } from '../Link/_size/Link_size_l'

// Block3
import { Block1 } from '../Block1/Block1'
import { Block2 } from '../Block2/Block2'

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

BR

Bad Rabbit in БЭМ
кхм, а сейчас можно вместе css сразу кидать scss ? вижу что хром поддерживает
источник

SB

Sergey Belozyorcev in БЭМ
Bad Rabbit
кхм, а сейчас можно вместе css сразу кидать scss ? вижу что хром поддерживает
Что за  scss3? Мир не хромом един
источник

BR

Bad Rabbit in БЭМ
опечатка)))
источник

SB

Sergey Belozyorcev in БЭМ
Bad Rabbit
опечатка)))
Мы у себя решили перейти на нативный CSS (немного приправленный postcss).
Пока больших проблем не возникает + понятный всем код (не требует дополнительного изучения).

Да и препроцессоры использовали только для того чтобы писать так

.Block {
 &-Elem {}
}

Но как выяснилось, писать .Block-Elem {} ничуть не сложнее/дольше с учётом подсказок vscode

Переменные
заменили на css-custom-properties

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

z

zakaratcha in БЭМ
> Зато в любой момент поиск по проекту
> даст точные совпадения.

Кажется, что если придерживаться БЭМ, то поиск по проекту .Block-Elem не должен понадобиться. Код должен лежать примерно в src/components/Block/Elem/BlockElem.css.
Не то, чтобы я с чем-то спорю... так, замечание.
источник

SB

Sergey Belozyorcev in БЭМ
zakaratcha
> Зато в любой момент поиск по проекту
> даст точные совпадения.

Кажется, что если придерживаться БЭМ, то поиск по проекту .Block-Elem не должен понадобиться. Код должен лежать примерно в src/components/Block/Elem/BlockElem.css.
Не то, чтобы я с чем-то спорю... так, замечание.
Наверное ты живёшь в идеальном мире )

// Block_view_main.css
.Block_view_main.Block_pressed {}

// Block_view_action.css
.Block_view_action.Block_pressed {}

Но суть не в поиске, это приятный бонус.
источник

SB

Sergey Belozyorcev in БЭМ
zakaratcha
> Зато в любой момент поиск по проекту
> даст точные совпадения.

Кажется, что если придерживаться БЭМ, то поиск по проекту .Block-Elem не должен понадобиться. Код должен лежать примерно в src/components/Block/Elem/BlockElem.css.
Не то, чтобы я с чем-то спорю... так, замечание.
Есть хороший доклад от Макеева, чтобы не переводить тему в холивар.
Он подробно рассказывает о том, к чему мы у себя стремимся.

https://www.youtube.com/watch?v=CaDnbOjXjRg
источник

WD

W D in БЭМ
Released anime about BEM
https://myanimelist.net/anime/39221/Bem
😊
источник

BR

Bad Rabbit in БЭМ
блин видео конечно много воды содержит, вот смотришь начало вроде интересно, и начинает сыпать сыпать)
источник
2019 August 03

АВ

Антон Виноградов in БЭМ
Привет, фронтендер! Ты же слышал про умный дом, которым управляет Алиса?! Ко мне в команду разработки интерфейсов Станции нужен именно ты. Будем включать розетки и пылесосы через БЭМ, React и TypeScript. Хайповые технологии, умные лампочки и даже кондиционер, лучшие разработчики и большая ответственность в комплекте 😉 Просто напиши мне!
источник

АВ

Антон Виноградов in БЭМ
источник

SB

Sergey Belozyorcev in БЭМ
Bad Rabbit
блин видео конечно много воды содержит, вот смотришь начало вроде интересно, и начинает сыпать сыпать)
Ну если нужна суть видео: CSS должен быть CSS'ом
источник
2019 August 04

SB

Sergey Belozyorcev in БЭМ
@awinogradov @yaroshevich @tadatuta

У вас работает Tree Shaking в bem-react?

Пытаюсь настроить сборку, но пока безрезультатно.

Хочется добиться такого результата.

Реально ли это?

./index.ts
./Button.tsx
./Button/_size/index.ts
./Button/_size/Button_size_l.tsx
./Button/_size/Button_size_xl.tsx

// ./Button/_size/index.ts
export * from './Button_size_l'
export * from './Button_size_xl'

// ./Button/index.ts
export * from './Button'
export * from './Button/_size'

Использование
import { Button as ButtonBase, withSizeL, withSizeXL } from '../Button'

Ну и тоже самое по платформам
import { Button as ButtonBase, withSizeL, withSizeXL } from '../Button/@desktop'
import { Button as ButtonBase, withSizeL, withSizeXL } from '../Button/@phone'
источник

AY

Alexey Yarrr (qfox) in БЭМ
Sergey Belozyorcev
@awinogradov @yaroshevich @tadatuta

У вас работает Tree Shaking в bem-react?

Пытаюсь настроить сборку, но пока безрезультатно.

Хочется добиться такого результата.

Реально ли это?

./index.ts
./Button.tsx
./Button/_size/index.ts
./Button/_size/Button_size_l.tsx
./Button/_size/Button_size_xl.tsx

// ./Button/_size/index.ts
export * from './Button_size_l'
export * from './Button_size_xl'

// ./Button/index.ts
export * from './Button'
export * from './Button/_size'

Использование
import { Button as ButtonBase, withSizeL, withSizeXL } from '../Button'

Ну и тоже самое по платформам
import { Button as ButtonBase, withSizeL, withSizeXL } from '../Button/@desktop'
import { Button as ButtonBase, withSizeL, withSizeXL } from '../Button/@phone'
Работает. Возможно, у тебя старый вебпак (нужен 4) или сборка специфичная.
Если первое, то обновляйся. Если со сборкой чтото крутил - давай подробностей, но мб дело еще в чем-то
источник

AY

Alexey Yarrr (qfox) in БЭМ
Sergey Belozyorcev
@awinogradov @yaroshevich @tadatuta

У вас работает Tree Shaking в bem-react?

Пытаюсь настроить сборку, но пока безрезультатно.

Хочется добиться такого результата.

Реально ли это?

./index.ts
./Button.tsx
./Button/_size/index.ts
./Button/_size/Button_size_l.tsx
./Button/_size/Button_size_xl.tsx

// ./Button/_size/index.ts
export * from './Button_size_l'
export * from './Button_size_xl'

// ./Button/index.ts
export * from './Button'
export * from './Button/_size'

Использование
import { Button as ButtonBase, withSizeL, withSizeXL } from '../Button'

Ну и тоже самое по платформам
import { Button as ButtonBase, withSizeL, withSizeXL } from '../Button/@desktop'
import { Button as ButtonBase, withSizeL, withSizeXL } from '../Button/@phone'
Но я скорее советом могу помочь, детали yarastqt или yeti-or знает
источник

SB

Sergey Belozyorcev in БЭМ
Alexey Yarrr (qfox)
Работает. Возможно, у тебя старый вебпак (нужен 4) или сборка специфичная.
Если первое, то обновляйся. Если со сборкой чтото крутил - давай подробностей, но мб дело еще в чем-то
Проект на nextjs (там по дефолту работает Tree Shaking)
Например сторонние либы, типо react-icons нормально прогоняются, а вот локальные модули нет....

nextJs: 9
webpack: 4.38.0

tsconfig
target: esnext
источник