Size: a a a

2020 December 04

Prikolist Начрэл... in БЭМ
Но компонент же не будет знать ничего о моём пользовательском модификаторе
источник

В

Вадим in БЭМ
как же он не будет знать? ты же создатель библиотеки ? если так - ты все это опишешь в плагине и типах фабрики!
источник

В

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

В

Вадим in БЭМ
мое предложение только для создания компонента из библиотечных модификаторов - упрощает процесс создания компонентов при большом количестве модификаций
источник

Prikolist Начрэл... in БЭМ
Что именно опишу? Давай будем разделять роли, меня как разработчика библиотеки и как её пользователя.

Вот я как пользователь установил себе библиотеку компонентов, хочу добавить кнопке модификатор, написал этот модификатор, библиотека о нём ничего не знает, мне наверное нужно как-то ей об этом модификаторе рассказать, как я должен это сделать?
источник

В

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

если мы говорим про вариант сырой библиотеки - то данный вариант может и не иметь смысла в виду постоянног добавления/изменения модификаторов
и даже в этом варианте если реализованы в библиотеке модификаторы - компонент можно создать при помощи фабрики а затем на него по стандартной схеме накатить еще кастомный модификатор потому что при сборке фабрика будет заменяться стандартным кодом
источник

В

Вадим in БЭМ
по сути:
let button = createButton([...])
                              ||
                              \/
- Импортирую базовый компонент
- Импортирую все модификаторы
- Импортирую хелпер для композиции
- Собираю с помощью хэлпера компонент с всеми модификаторами
источник

В

Вадим in БЭМ
Prikolist Начрэл
Что именно опишу? Давай будем разделять роли, меня как разработчика библиотеки и как её пользователя.

Вот я как пользователь установил себе библиотеку компонентов, хочу добавить кнопке модификатор, написал этот модификатор, библиотека о нём ничего не знает, мне наверное нужно как-то ей об этом модификаторе рассказать, как я должен это сделать?
стало понятней? 🙂
источник

Prikolist Начрэл... in БЭМ
Вадим
стало понятней? 🙂
Нет. Всё ещё не понятно, как подключить пользовательский модификатор.

В моём примере выше, в шаге "Импортирую все модификаторы", я явно импортирую модификаторы, откуда угодно, из самой библиотеки или из моего проекта или из другой библиотеки.
источник

В

Вадим in БЭМ
все верно - если ты используешь библиотечные модификаторы - ты их будешь импортировать из библиотеки
источник

В

Вадим in БЭМ
о кастомных пока не говорим - мы сейчас говорим о библиотеке и реализованных в ней модификаторах
источник

Prikolist Начрэл... in БЭМ
Вадим
о кастомных пока не говорим - мы сейчас говорим о библиотеке и реализованных в ней модификаторах
Почему не говорим? Зачем тогда нужна библиотека компонентов, если её нельзя расширить?
источник

В

Вадим in БЭМ
Prikolist Начрэл
Почему не говорим? Зачем тогда нужна библиотека компонентов, если её нельзя расширить?
вот и я так думаю зачем мне библиотека если я еще что-то должен там допилиавать? это библиотека или просто сырой код который еще надо напильником пилить???
вот если бы я взял к примеру yandex-ui что мне добавить к кнопке? и зачем?

речь идет о том что разработчик компонента хочет упростить сборку компонента из базового и какого-то набора модификаторов без большой затраты времени работы пальцами!
источник

Prikolist Начрэл... in БЭМ
В yandex-ui ты можешь просто импортировать бандл, в этом случае ничего собирать не нужно.

import {Button} from 'yandex-ui/Button/Button.bundle/desktop'

Всё, у тебя есть кнопка с всеми модификаторами. Можно использовать.

Смысл yandex-ui в том, что такая возможность есть для тех, кому она нужна.
источник

В

Вадим in БЭМ
Prikolist Начрэл
В yandex-ui ты можешь просто импортировать бандл, в этом случае ничего собирать не нужно.

import {Button} from 'yandex-ui/Button/Button.bundle/desktop'

Всё, у тебя есть кнопка с всеми модификаторами. Можно использовать.

Смысл yandex-ui в том, что такая возможность есть для тех, кому она нужна.
в том-то и вопрос что не нужны все модификаторы - их там сотни могут быть а нужно 33  из них!
представь сколько это пальцами работы!!

а тут заботливый разработчик говорит: милый напиши вызов createButton и перечисли чеоез запятую все желаемые модификаторы а я за тебя все сделаю - все 33 модификатора соберу и верну тебе собранный компонент и ничего лишнего!
источник

Prikolist Начрэл... in БЭМ
Я правильно понимаю, что ты предлагаешь изменить способ сборки компонентов так что
- Пользователь не сможет добавлять свои модификаторы
- Сборка станет не явной, а магической, дилегируется плагину сборщика
- Для подсветки компонента в IDE нужно написать LangService
- Профит в том, что не нужно вручную писать модификаторы
источник

В

Вадим in БЭМ
Prikolist Начрэл
Я правильно понимаю, что ты предлагаешь изменить способ сборки компонентов так что
- Пользователь не сможет добавлять свои модификаторы
- Сборка станет не явной, а магической, дилегируется плагину сборщика
- Для подсветки компонента в IDE нужно написать LangService
- Профит в том, что не нужно вручную писать модификаторы
нет не верно
- пользователь по-прежнему может все делать то что он и сейчас делает
- данный способ создания компонента - помощь от разработчика которая сокращает время на создание компонента
- ничего писать для IDE не нужно так как createButton описывается и типизируется в модуле button
- полученный компонент при помощи фабрики ни чем не отличается от собранного в ручную (плагин заменяет код фабрики на стандартный процеес - вставляет все необходимые импорты и делает обычную сборку) поэтому этот компонент можно будет расширить при помощи кастомного модификатора стандартным способом
источник

В

Вадим in БЭМ
Prikolist Начрэл
Я правильно понимаю, что ты предлагаешь изменить способ сборки компонентов так что
- Пользователь не сможет добавлять свои модификаторы
- Сборка станет не явной, а магической, дилегируется плагину сборщика
- Для подсветки компонента в IDE нужно написать LangService
- Профит в том, что не нужно вручную писать модификаторы
я понял почему ты не понимаешь - ты пропустил обсуждение для чего все это - это все предлагалось для упрощение сборки компонента и большого количества библиотечных модификаторов - простой хэлпер для быстрого использования
источник

Prikolist Начрэл... in БЭМ
Prikolist Начрэл
Нет. Всё ещё не понятно, как подключить пользовательский модификатор.

В моём примере выше, в шаге "Импортирую все модификаторы", я явно импортирую модификаторы, откуда угодно, из самой библиотеки или из моего проекта или из другой библиотеки.
А как подключить пользовательский модификатор?
источник

В

Вадим in БЭМ
источник