Size: a a a

2018 November 25

VG

Vladimir Grinenko in БЭМ
Роман
Из https://ru.bem.info/technologies/ пропала ссылка на «Библиотеки» (https://ru.bem.info/platform/libs/) и это огорчает.
Документация к ним и вовсе сломана.
Спасибо, починим.
Это мы доки про реакт запаблишили и библиотеки зацепило :(
источник
2018 November 26

АВ

Антон Виноградов in БЭМ
Доброго дня!

Мы, внезапно, влили v3 bem-react-corе в master. Теперь это основная, рекомендованная версия библиотеки для работы с БЭМ в React мире. Версии v1 и v2 поддерживаться более не будут, но будут продолжать существовать в соответствующих ветках еще какое-то время.

Репозиторий переименован в bem-react для соответствия с npm неймспейсом @bem-react, где находятся все пакеты библиотеки.

Всем добра 😉

https://github.com/bem/bem-react
источник

ES

Eugene Schemelev in БЭМ
Антон Виноградов
Доброго дня!

Мы, внезапно, влили v3 bem-react-corе в master. Теперь это основная, рекомендованная версия библиотеки для работы с БЭМ в React мире. Версии v1 и v2 поддерживаться более не будут, но будут продолжать существовать в соответствующих ветках еще какое-то время.

Репозиторий переименован в bem-react для соответствия с npm неймспейсом @bem-react, где находятся все пакеты библиотеки.

Всем добра 😉

https://github.com/bem/bem-react
Круто! Спасибо! В разделе readme Packages не работаю ссылки на доки
источник

АВ

Антон Виноградов in БЭМ
Уже исправляем, спасибо!
источник

АВ

Антон Виноградов in БЭМ
Eugene Schemelev
Круто! Спасибо! В разделе readme Packages не работаю ссылки на доки
Исправлено 😉
источник

AK

Alex Komarov in БЭМ
Антон Виноградов
Доброго дня!

Мы, внезапно, влили v3 bem-react-corе в master. Теперь это основная, рекомендованная версия библиотеки для работы с БЭМ в React мире. Версии v1 и v2 поддерживаться более не будут, но будут продолжать существовать в соответствующих ветках еще какое-то время.

Репозиторий переименован в bem-react для соответствия с npm неймспейсом @bem-react, где находятся все пакеты библиотеки.

Всем добра 😉

https://github.com/bem/bem-react
ура!
вопрос по такому случаю: в v1 благодаря лоадеру в билд включались только те модификаторы, которые мы заимпортили (реально используем), а сейчас при экспорте компонента в compose перечисляются все, и соответственно все же попадают в сборку. а если я поставляю компоненты в виде библиотеки то не хотелось бы, допустим, для каждого из них руками импортировать все нужные модификаторы и прописывать compose уже на уровне приложения, не говоря об использовании di. может быть есть какой-то способ прикрутить сюда code splitting? мне потому что пока не пришла идея, как это провернуть с HOC’ами
источник

АВ

Антон Виноградов in БЭМ
Alex Komarov
ура!
вопрос по такому случаю: в v1 благодаря лоадеру в билд включались только те модификаторы, которые мы заимпортили (реально используем), а сейчас при экспорте компонента в compose перечисляются все, и соответственно все же попадают в сборку. а если я поставляю компоненты в виде библиотеки то не хотелось бы, допустим, для каждого из них руками импортировать все нужные модификаторы и прописывать compose уже на уровне приложения, не говоря об использовании di. может быть есть какой-то способ прикрутить сюда code splitting? мне потому что пока не пришла идея, как это провернуть с HOC’ами
Я не очень осознал проблему. Лоадер в v1 делал не то, что ты описываешь. Он раскрывал переопределения блоков относительно схемы уровней. Задачу удаления мертвого кода делал за тебя webpack и uglify. В этом плане ничего не изменилось. Если ты заимпортил какой-то код, он попадет в бандл. Не знаю где ты увидел паттерн экспорта собранных всея модификаторов через compose, но это не правильно. Компонент должен собираться по месту использования. Это единственный способ получить максимально эффективный размер бандла и явность в использовании модификаторов на проекте.
источник

АВ

Антон Виноградов in БЭМ
Может ты опишешь задачу, которую ты хочешь выполнить, а мы тут попробуем найти ей решение?
источник

АВ

Антон Виноградов in БЭМ
Из неявного. Если я правильно понимаю направление твоей мысли. То с HOCами можно еще круче, чем раньше. Например, ты можешь использовать динамические импорты внутри модификатора. То есть код модификатора подгрузится в рантайме только тогда, когда сработает предикат 😉
источник

AK

Alex Komarov in БЭМ
ну как не то, помимо прочего он как раз добавлял require только для модификаторов, которые встретил в кастомных бэм-импортах (с учетом технологий и уровней, разумеется). в итоге если я не импортировал подификатор, его и не было в сборке
источник

AK

Alex Komarov in БЭМ
Антон Виноградов
Из неявного. Если я правильно понимаю направление твоей мысли. То с HOCами можно еще круче, чем раньше. Например, ты можешь использовать динамические импорты внутри модификатора. То есть код модификатора подгрузится в рантайме только тогда, когда сработает предикат 😉
вот именно этого и хочется) заэкспортить из библиотеки все модификаторы, но чтобы за счет код-сплиттинга в рантайм приехали только используемые
источник

АВ

Антон Виноградов in БЭМ
Alex Komarov
ну как не то, помимо прочего он как раз добавлял require только для модификаторов, которые встретил в кастомных бэм-импортах (с учетом технологий и уровней, разумеется). в итоге если я не импортировал подификатор, его и не было в сборке
Это и есть то, что написано руками разработчика. Трансофрмация строки импорта в реквари никакой магией не обладает.
источник

АВ

Антон Виноградов in БЭМ
Alex Komarov
вот именно этого и хочется) заэкспортить из библиотеки все модификаторы, но чтобы за счет код-сплиттинга в рантайм приехали только используемые
Мы не в силах тебе помешать это сделать) Читай документацию по динамическим импортам и используй в модификаторах. Можешь использовать вместе с react-loadable
источник

AK

Alex Komarov in БЭМ
Антон Виноградов
Это и есть то, что написано руками разработчика. Трансофрмация строки импорта в реквари никакой магией не обладает.
но тогда это стоило считанных символов, не бойлерплейтного кода по сборке нужных модификаторов для пары десятков компонентов)
источник

AK

Alex Komarov in БЭМ
Антон Виноградов
Мы не в силах тебе помешать это сделать) Читай документацию по динамическим импортам и используй в модификаторах. Можешь использовать вместе с react-loadable
просто каждый модификатор  — это HOC, поэтому не столь очевидно, в каком именно месте следует воткнуть тот же React.lazy
источник

АВ

Антон Виноградов in БЭМ
Alex Komarov
но тогда это стоило считанных символов, не бойлерплейтного кода по сборке нужных модификаторов для пары десятков компонентов)
Я все еще не понимаю проблемы. Тебе не нравится, что вместо b:Block m:modName надо писать import { modName } from '../../?
источник

AK

Alex Komarov in БЭМ
да, вот так, право, не очень хочется)
import BlockWithMods from 'b:Block m:mod1 m:mod2 m:mod3 m:mod4'

vs

import Block from 'components-package/../../Block';
import mod1 from 'components-package/../../../mod1';
import mod2 from 'components-package/../../../mod2';
import mod3 from 'components-package/../../../mod3';
import mod4 from 'components-package/../../../mod4';
import { compose } from '@bem-react/core'

const BlockWithMods = compose(mod1, mod2, mod3, mod4)(Block)
источник

АВ

Антон Виноградов in БЭМ
К несчастью некоторых, но к счастью большинства мы перешли на полное использование стандарта языка. Заиспользовать сокращение такого рода, ты можешь самостоятельно. Кроме этого, явная композиция связана со структурой результирующего интерфейса компонента. Магия, которую ты так любишь невозможна в TypeScript, который мы теперь поддерживаем из коробки.
источник

AK

Alex Komarov in БЭМ
не не, с магией это уже пройденный этап. было круто, но потом действительно начинаются проблемы. вопрос был всего лишь в том, как лучше прикрутить к модификаторам динамические импорты. но я понял, вы сами импортируете требуемые модификаторы явно, вручную
источник

АВ

Антон Виноградов in БЭМ
Alex Komarov
не не, с магией это уже пройденный этап. было круто, но потом действительно начинаются проблемы. вопрос был всего лишь в том, как лучше прикрутить к модификаторам динамические импорты. но я понял, вы сами импортируете требуемые модификаторы явно, вручную
Динамические не значит, что они сами) Импорты ты все равно пишешь) Кол-во кода от этого не меняется. Да, пишем сами руками.
источник