-
Notifications
You must be signed in to change notification settings - Fork 198
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
@ *.blocks -> blocks/* #158
Comments
|
@veged В приведённой @tadatuta ссылке указано, что была идея Воспринимать Мне как разработчику важна приятная структура проекта, которая будет не будет резать глаза. |
У нас была немного другая идея про desktop/touch, она сродни старым технологиям .ie8, но мы думали что будет, если назвать это платформа, и добавить суффиксом/префиксом |
@belozyorcev ничего плохого во «фрактальности» не вижу — наоборот, это пример хорошей комбинаторики, когда через небольшое количество базовых понятий выражается всё агрументация про «резать глаза» очень субъективна, некоторым и отсутствие папок |
@veged также идея была такая
или
Для этого я и создал issue для голосования. |
Это и усложняет процесс адаптации. Почему |
@veger что нужно для понятия "технология"? Почему нужно вводить *.blocks, *.bundles, *.lib? |
Мне удобна структура в проекте, когда в корне лежат директории blocks и bundles, они группируют сущности. Структура с desktop.blocks и common.blocks мне на проекте не удобна:
Идея про то, что .blocks это технология реализации блока проекта — забавная абстракция, но никакой практической пользы от неё не вижу. |
Если я правильно понял @zxqfox, то я его поддержу) Кажется структура вида:
Сильно упрощает хождение по проекту. Но если по-чесноку, то @belozyorcev ты и сейчас можешь это настроить ;) |
Да, прямо сейчас нет проблемы использовать Мне |
Речь же не о том, чтобы везде использовать blocks/* вместо *.blocks. |
@awinogradov в этом то и дело. Мне без разницы, т.к. я могу и так сделать. Вопрос о новичках. Остальное уже описал выше. А @vithar более точно сформировал мою мысль. |
Не надо никакого голосования, нужно просто настроить ;) Я по разному работал — нормально и так и так. |
Стаб как раз правильное место для проще, с него начинают. |
Если очень хочется вариативность по платформам, то на мой взгляд button.css, button.desktop.css и button.touch.css лучше, чем предложение выше. |
Ну ок. Я всегда думал иначе про стаб) нормально жил) |
а на мой взгляд так. |
Это введение ещё одной сущности на пустом месте. |
|
когда вы думаете, что платформы это технологии, вы не учитываете, что платформенных уровней переопределения может быть неопределённое количество — например, на Серпе есть проблема вида «я хочу всё про блок видеть в одном месте» правильно решается с помощью BEM IDE, добиться этого чисто на файловой системе невозможно и не надо пытаться |
у тебя не используется bem-components? они не способны работать в таком режиме |
@veged у меня в bem.info используется bem-components: https://github.com/bem-site/bem.info/blob/master/.enb/make.js Тема islands не используется. |
@vithar без тачёвого уровня bem-components не будут полностью тачёвыми |
@veged то, что я использую — работает. |
просто учитываем, поэтому остальные выводы ошибочны. |
Можно также сделать что-то типо
или
|
@pvlv думаю лучше в issue репозитория писать, т.к. здесь другая тема вопроса ;) |
@tadatuta у меня "блок" ассоциируется с html-блоком html без css - может существовать Получается, что html первичен - может существовать сам по себе(с некоторыми допущениями) Что касается js, тут все иначе js - не просто описание чего-то, это логика, он заимодействует с блоком, влияет на блок Если мы добавим к блоку(с зависимостями -> css -> img) js файл - можно теперь блок называть "блоком"? В React эту ситуацию разрулили так:
от сюда следует
соответсвует 1 выражению, Считаю, что в текущих реалиях эту ситуацию нужно пересмотреть, взвесить все "за" и "против". |
@belozyorcev это был не вопрос, я просто акцентировал внимание |
Если ты про именования репозитория, то акцентируй его и здесь ;) #157
А вот по поводу CSS ты немного заблуждаешься. Он существует и без HTML. Например для SVG, или, например в рабочем окружении GNOME используется CSS.
*:after { content: "", background: url('bem_image.png') }.
https://ru.wikipedia.org/wiki/Блок upd |
SVG - в отрыве html/xml не может существовать (контекст - вэб).
Интересно, а как вы css будете рендерить? Там не html, но что-то(лень искать) на что влияет css. Сделать background зеленым, которого нет. Это как?
А как же тег
А где я написал, что блок не является единым целым? Текст после обзаца объясняет, что я имею ввиду. upd
Продать/объяснить можно все, что угодно. Вопрос в мотивации. До React`a у twitter была(и есть https://flightjs.github.io/) похожая идея, но не взлетело. |
GTK+
bemtree описывает структуру сущности? Да. Значит всё это зависимо и воспринимается как едино целое. Считаю дальнейшее обсуждение неуместным, т.к. оно уже ушло от темы. Но ты можешь создать issue на форуме и подробно всё описать. |
@belozyorcev
Все верно это "блок", который состоит из bemhtml, bemtree, css, js Примеры блоков
Они блоки и все, и поэтому они равны Но Если их стравнивать "строго"
, то они не будут равны
Другие примеры
Блоки блоками, но назначения/цели/задачи могут быть разными у этих блоков => они должны называться по разному |
@pvlv в БЭМ тоже используют контейнеры. Это те блоки, которые состоят из блоков. Например блок |
Разве мы где-то утверждали, что CSS — это сущность или блок? Мы говорили все на той же странице про основные понятия БЭМ, что «блоки могут быть реализованы в одной или нескольких технологиях, например: поведение — JavaScript, CoffeeScript; внешний вид — CSS, Stylus, Sass; шаблоны — Pug, Handlebars, XSL, BEMHTML, BH; документация — Markdown, Wiki, XML». Еще раз повторюсь: всякий раз, когда ты читаешь слово «блок» на bem.info, считай, что там написано «компонент». Именно такой смысл вкладывается в это слово. Это синонимы. Примерно как кекс и маффин ;) |
моя цит.
и
@tadatuta А где я написал, что блоки должны использовать определенную технологию? Вместо этих вставьте другие.
цит. из моего коммента
Я это прекрасно понимаю. И наглядно показал. @tadatuta А что быдет если мы будем "строго сравнивать"? И чему это выражение будет равно?
цит.
они(блоки) не равны между собой => (следовательно) => должны называться по разному для лучшего понимания происхоящего.
Яндекс - надменность |
@tadutata я вот подумал... А может действительно нужно ввести понятие бокса или контейнера, как абстракцию над управляющим блоком? Чтобы блоки продолжали означать маленький компонент, а контейнер - наиболее полный компонент чтобы можно было понять где ветвь (контейнер), а где ягодки (блоки). |
Например: form-box - наш "основной" блок/компонент, который состоит из маленьких, примитивных блоков. |
@belozyorcev В БЭМе, должно быть четко прописано как должен именоваться подобный блок.
Раньше это не требовалось, но сейчас это важно.
Ага, и возвращаемся до БЭМ времена.
cпс тебе, именно это я имел ввиду
|
Я еще один последний раз попробую с аналогиями. Есть тег
Однако они по-прежнему называются тегам. Чтобы понять, что они отличаются, достаточно знать их названия. Хотя, конечно, можно придумать кучу дополнительных классификаций и запретить называть теги тегами, т.к. это тормозит развитие. Да, очевидно, что блоки могут быть разными. В той же степени, в какой Web Components могут быть разными. Но они при этом вполне могут продолжать называться веб компонентами. |
@belozyorcev
Большинство блоков на практике могут быть контейнерами. И даже элементы зачастую контейнеры. Давай возьмем простой пример со списком. Сегодня был блок К списку, его айтемам, ссылкам и иконкам вполне могут быть примиксованы другие блоки или элементы с богатым внутренним миром. Или наоборот, один блок может быть разнесен по нескольким несвязанным DOM-узлам. А представь эту же историю на более серьезных примерах. Будем на каждый чих их переименовывать? Какую задачу это решит? |
потому, что div- это тег(1), iframe - это тег(1) =>
false, потому, что div-тег(ЦЕЛЬ/НАЗНАЧЕНИЕ/СУТЬ - является блочным элементом и предназначен для выделения фрагмента документа с целью изменения вида содержимого) iframe(ЦЕЛЬ/НАЗНАЧЕНИЕ/СУТЬ - является контейнером, содержание которого игнорируется браузерами)
Поэтой причине div и iframe называются по разному, но при всем при этом они являются тегами(блоками) А что будет если они будут называться одинаково?
Или все таки лучше так ?
Пример: Блок который включает в себя другие блоки - называется контейнером(пример) А структура папок будет следующая(очень упрощенная) и это наглядный пример
Итог сборки
Компонент, как блок высшего порядка должен только включать блоки. Компонент, могут быть вложенными. Блоки могу существовать в отрыве от компонентов - тогда это называется статик блок (например) Слово "компонент" можно заменить любым другим словом - box, container и тд.
Что бы знать название, нужно знать как называть. Пока везде блоки в блоках на блоках через блоки. В БЭМе, есть только блок и все, а остальное додумайте сами. Это актуально было 5-10 лет назад, но не сейчас. БЭМ должен однозначно дать определение блокам, которые используется для ввода дополнительного уровня абстракции. Это нужно для единообразия в новых проектах.
А где я сказал, что блоки нужно запретить называть "блоками"? (см.выше)
А если блоки разные, почему они называются одинаково?(см.выше) |
Как, где? В этом самом треде:
или
А если Блоки называются по-разному: блок Получается, что одинаковое название «тег» для В твоем примере, если внезапно потребуется внутрь блоков |
Да не надо ни чего двигать,есть блоки и лежат в папочке /blocks. Блоки не изменны. Они просто есть. Нужно делать include в другие блоки - тем самым создавать новую сущность. Эта сущность должна комбинировать блоки, возможно иметь логику.
Теперь создаем компонент1(или box или container)
структура component1.html
Создадим еще 1 компонент component2.html
структура component2.html
А теперь предположим что нам нужно изменить в componet1.html
структура component3.html
и итоговый index.html будет выглядеть вот так
Тут я не правильно выразился, извиняюсь. |
@tadatuta ты там держись ;) Sent from my iPhone
|
@pvlv А по поводу разбивки по контейнерам (мне больше нравится правда "box") нужно попробовать поработать таким способом. И если оно окажется удачным, то продвигать его в массы. Я сейчас сам занимаюсь оптимизациями разработки в таких направлениях, эксперементирую. // БЭМ-БОКСЫ Суть правда только в принципах разработки, но не в инструментах |
@tadutata box можно воспринимать как конечный набор для пользователя. Вспомни как мы рекомендуем передавать данные между блоками. У нас есть родительский блок, который знает о своих дочерних блоках, дочерние блоки ничего не знают о родителе. Сами блоки представляют собой "тупые" компоненты. Они ничего не могут реализовать на практике. Они даже не знают как будут использоваться, сугубо говоря. Блоки могут предоставлять только своё API (могут иметь дочерние блоки, но всё также "тупые". Просто для расширения своих возможностей). Объясняем человеку простоту блоков, что они ничего не могут самостоятельно и полностью независимы. И теперь нам поря собрать умный бокс/кейс, который знает зачем он нужен, знает, что ему нужно для своей работы (Знает о дочерних блоках и использует их API). Бокс строит bemtree из дочерних блоков. А также конектит события между блоками. Например такое дерево:
И ещё раз повторюсь. Мы всегда рекомендуем использовать именно такой подход для коннекта блоков. Но не всегда понятно, какой же блок является мостом/передатчиком. |
@belozyorcev PS: А «умный» box внезапно окажется не родителем |
@pvlv давайте я сэкономлю всем кучу времени и сил, хотя, возможно, это покажется слишком грубым и категоричным (заранее извиняюсь) — мы НЕ будем переименовывать понятия Блок, Элемент и Модификатор, можно дальше не ломать копья по этому поводу |
@belozyorcev зачем нужны префиксы |
@veged Для явного обозначение уровней. Если директория начинается с префикса
Если их убрать, то не совсем понятно, почему на такой-то ступени иерархии группа блоков, а на такой-то директория уже обозначает блок. Основная цель данного топика - сделать структуру стартового проекта чистой и понятной. Ведь проще объяснить человеку, что:
чем:
|
повторюсь — по моему без |
можно еще сделать как технологию
2016-08-03 12:31 GMT+03:00 Sergey Belozyorcev [email protected]:
|
@veged прочитайте, пжл, внимательно все, что я написал. Речь не шла про переименование божественных "блоков". Если кратко, идея - добавить дополнительный уровень абстракции при формировании структуры проекта. |
@pvlv слишком много текста чтобы это было явно понятно. Ты начал просто тему издалека. Чтобы дальше разговор был более конструктивен, предлагаю более явно пояснять/предлагать реализацию абстракции. |
Часто видно в проектах, что люди предпочитают именно такой стиль расположения блоков. Он добавляет один уровень иерархии, но при этом визуально выглядит намного аккуратней.
таже история и с *bundles.
upd.
При этом сразу понятно, что всё находится именно в папке
blocks
, а не в папках, которые оканчиваются наblocks
. Сейчас все лежит на одном уровне (папки блоков, папки бандлов, служебные каталоги) и не сразу понимаешь куда нужно лезть.The text was updated successfully, but these errors were encountered: