Войти с помощью github

Не могу разобраться с шаблонизацией на клиенте. Есть два блока content и list. Как сделать чтобы из блока content был виден шаблон list? Какие зависимости надо подключать и в каком порядке?

пробовал так:

modules.define('i-bem__dom', ['BEMHTML'], function(provide, BEMHTML, BEMDOM) {
    BEMDOM.decl('content', {
        onSetMod: {
            'js':{
                'inited': function(){
                    BEMDOM.append(
                        this.domElem,
                        BEMHTML.apply(
                            {
                                block: 'list'
                            })
                        );
                }
            }
        }
    });
provide(BEMDOM);

});

Я пользуюсь roole в обычной работе. Иногда использую дизайн из bem-components. Там он на stylus. Как сделать так, чтобы все это собиралось вместе? кусок make.js: MAKE.decl('BundleNode', {

getTechs: function() {

    return [
        'bemjson.js',
        'bemdecl.js',
        'deps.js',
        'roole',
        'stylus',
        'css',
        'ie.css',
        'ie9.css',
        'bemtree',
        'bemhtml',
        'node.js',
        'spec.js',
        'browser.js+bemhtml',
        'html'
    ];

},

getForkedTechs : function() {
    return this.__base().concat(['roole','stylus', 'browser.js+bemhtml']);
},

getLevelsMap : function() {
    return {
        desktop: [
            'libs/bem-core/common.blocks',
            'libs/bem-core/desktop.blocks',
            'libs/bem-components/common.blocks',
            'libs/bem-components/design/common.blocks',
            'libs/bem-components/desktop.blocks',
            'libs/bem-components/design/desktop.blocks',
            'libs/constructor-blocks',
            'common.blocks',
            'desktop.blocks'
        ]
    };
},

В такой конфигурации stylus обрабатывается, но не попадает в _index.css

Доброго времени суток. Где можно посмотреть UI Elements Naming Convention (соглашение как называть тот или иной контрол графического интерфейса), используемый в Яндексе?

Можно ли как-то отключить подгрузку jquery__event_type_pointerclick для стандартных блоков? Дело в том, что я использую некоторые third-party плагины и код полифила FastClick их ломает (некоторые последовательности событий перестают работать) На сколько он важен?

Если использовать нотацию вида

BEMDOM.decl(this.name, {
    method: function() {}
}, {
    prop: value
});

то в панельке Structure в WebStorm мне не будут доступны методы и свойства блока. Есть какой-то способ это починить?

Я придумал только такой ход:

var instance = {
    method: function() {}
};
var constructor = {
    prop: value
}
BEMDOM.decl(this.name, instance, constructor);

Есть другие варианты?

Здравствуйте. Я прототипирую в Axure. Портал крупный и сложный. Внедряю в прототип бэм.

Сейчас возникла задача описать прототип многоуровневым вложенным списком. Примерно так: Раздел 1 -Шапка --лого --навигация -блок1 --эл1 --эл2

То есть, это тот же самый прототип, просто описан он словами. Начал майндмэпить в xmind. Столкнулся с банальной проблемой - если меняется блок, то приходится в ручную его править везде, где он есть. Решения два: где-нибудь на холсте описать блок (перечислив его элементы) и либо 1) от нужных элементов пустить стрелочки в те страницы, где они встречаются, 2) на страницах просто указывать название блока и перечислить только нужные элементы этого блока тупо их порядковыми номерами. Начал работать по второму решению. Перечислять элементы блока необходимо, потому что, допустим, один и тот же блок выглядит по разному при разных правах доступа. Например, у админа портала подгрузятся кнопки, позволяющие редактировать элементы. Про модификаторы вообще молчу - их несколько и у блока, и у элементов.

И опять столкнулся с банальной проблемой. Указав на страницах чисто блоки с номерами их элементов, мне все равно приходилось всё и везде править в ручную когда менялась нумерация или названия блоков.

Теперь, что мне нужно (обязательно первое условие, последующие были бы просто очень приятным дополнением): 1) возможность добавления мастер шаблона для блоков. То есть, прописал один раз блок, а потом расклонировал его по разделам карты ума - и клоны автоматически апдейтятся при изменении мастер-шаблона. 2) возможность быстро менять список нужных элементов в клонах. Хотя бы галками, или галками в выпадающем списке. 3) возможность сопоставить словесной карте ума графические эквиваленты, чтобы потом можно было нажать на кнопку "сгенерировать" и вуаля - мы имеем наглядный графический прототип портала.

Есть ли такие инструменты? Или придётся разрабатывать свой инструмент (думаю, с помощью простого html и работой с файлами, а не программой вроде xmind это вполне реально). Если да, то как лучше создать такой инструмент (или алгоритм действий), учитывая что я дизайнер и программировать не умею (разбираюсь только в html)

Спасибо!

Дима Белицкий, в своем докладе в Москве выносит все миксы блоков в bemhtml блока, хотелось бы узнать насколько это правильно, выходит надо выносить миксы и модификаторы? Вообщем вопрос в том, когда стоит выносить сущности, а когда нет в bemhtml.

Да, и отсортируте плз теги по алфавиту

Здравствуйте!

Подскажите пожалуйста, как правильно организовать код для стилизации hover состояний у элементов блоков.

Структура такая:

b-control
    __title
        b-control__title.less

   __descr
       b-control__descr.less

b-control.less

При таком подходе получается, чтобы навесить при наведении на блок b-control hover для заголовока b-control__title я должен внутри файла b-control.less сделать следующую запись:

.b-control {
    &:hover {
       .b-control__title {
           color: @green;
       }
   }
}

Мне кажется не правильным прописывать внутри файла b-control.less стили для состояния элемента, который описан в другом файле. Как правильно с точки зрения БЭМ реализовать такой кейс? При условии что навешивать на сам заголовок hover я не могу, нужно чтоб при наведении на контейнер он изменялся.

Правильно ли будет вынести content (текст) блока в bemhtml шаблон.

Блок используется в нескольких местах с одинаковым содержимым (текстом), ведь прописывать один и тот же текст в разных местах плохое решение

Всем привет. Прислали вот такой скриншот. https://yadi.sk/i/5-NyX9-Abc3he Попап себя отлично ведет на разрешениях меньше 2000px. Когда больше почему то съезжает на 20px.

В js ничего странного.

modules.define('menu-control', ['i-bem__dom'], function(provide, BEMDOM) {

provide(BEMDOM.decl(this.name, {
    onSetMod : {
        'js' : {
            'inited' : function() {
                var control = this.findBlockInside({ block : 'checkbox', modName : 'theme', modVal : 'menu'});
                var popup = this.findBlockInside({ block : 'popup', modName : 'theme', modVal : 'menu'});

                popup.setTarget(this);
                control.bindTo('click', function() {
                    popup.toggleMod('visible');
                });
            }
        }
    }
}));

});

В css похоеже тоже ничего не обычного. Сайт http://domjourvrn.ru .

Посмотрите может бага?

Вот такой вот у меня make файл, поставил, заинсталил все в libs npm/bower, но не взлетает js файл, пишет, что modules is not defined, так понимаем, что ym не подключается в начало, хотя объвление i-bem-dom. :( Как его подружить? Уже много способов вроде перепробовали, но ничего не получается.

module.exports = function(config) {
  config.node('pages/index', function(nodeConfig) {
    nodeConfig.addTechs([
      [ require('enb/techs/levels'), { levels: getLevels(config) } ],
      [ require("enb/techs/file-provider"), { target: "?.bemjson.js" } ],
      require("enb/techs/bemdecl-from-bemjson"),
      // [ require('enb/techs/file-provider'), { target: '?.bemdecl.js' } ],
      require('enb-bh/techs/bh-server'),
      require('enb-bh/techs/bh-client'),
      require('enb/techs/deps'),
      require('enb/techs/files'),
      require('enb/techs/css-stylus'),
      require('enb-bh/techs/html-from-bemjson'),
      [ require('enb-diverse-js/techs/browser-js'), { target: '?.pre.js' }],
      [ require('enb-modules/techs/prepend-modules'), { target: '?.js', source: '?.pre.js' }],
      // require('enb/techs/js'),
      // [ require('enb/techs/file-copy'), { sourceTarget: '?.js', destTarget: '_?.js' } ],
      [ require('enb/techs/file-copy'), { sourceTarget: '?.css', destTarget: '_?.css' } ]
    ]);


  nodeConfig.addTargets(['?.html', '?.bemdecl.js', '?.deps.js', '_?.js', '_?.css', ]);


  });
};


function getLevels(config) {
  return [
    {path: 'libs/bem-core/common.blocks', check: false},
    {path: 'libs/bem-core/desktop.blocks', check: false},
    {path: 'libs/bem-components/common.blocks', check: false},
    {path: 'libs/bem-components/desktop.blocks', check: false},
    {path: 'libs/bem-components/design/common.blocks', check: false},
    {path: 'libs/bem-components/design/desktop.blocks', check: false},
    {path: 'common.blocks', check: true},
    {path: 'desktop.blocks', check: true}
  ].map(function(levelPath) { return config.resolvePath(levelPath); });
}

Здравствуйте. По этой ссылке http://jsbin.com/xulado/7/edit размещено два экземпляра виджета табов. Примеры выдернуты из рабочего проекта. Цель — сделать виджеты, которые не поломают верстку и JS. К стилю контейнеров применены селекторы тем. Интересует насколько приемлемо с точки зрения методологии БЭМ применять такой способ изменения внешнего вида блоков. Может будет лучше дописывать к каждому элементу модификатор?

Пытаюсь установить bem сервер на своем компьютере (Macbook Air, OS X 10.9.4) Делаю все по инструкции ru.bem.info/tutorials/project-stub После команды 'bem server' перехожу на страницу localhost:8080/desktop.bundles И вижу следующее сообщение

HTTP error 500

Error: Tech module with path '/Users/my_username/lab/project-stub/libs/bem-core/.bem/techs/bemhtml.js' not found on require search paths at exports.Level.INHERIT.resolveTechPath (/Users/my_username/lab/project-stub/node_modules/bem/lib/level.js:280:19) at exports.Level.INHERIT.resolveTech (/Users/my_username/lab/project-stub/node_modules/bem/lib/level.js:228:25) at exports.Level.INHERIT.resolveTechName (/Users/my_username/lab/project-stub/node_modules/bem/lib/level.js:244:47) at exports.Level.INHERIT.resolveTech (/Users/my_username/lab/project-stub/node_modules/bem/lib/level.js:231:25) at exports.Level.INHERIT.createTech (/Users/my_username/lab/project-stub/node_modules/bem/lib/level.js:206:32) at exports.Level.INHERIT.getTech (/Users/my_username/lab/project-stub/node_modules/bem/lib/level.js:193:43) at null. (/Users/my_username/lab/project-stub/node_modules/bem/lib/nodes/bundle.js:64:28) at Array.forEach (native) at null. (/Users/my_username/lab/project-stub/node_modules/bem/lib/nodes/bundle.js:62:29) at Promise.apply (/Users/my_username/lab/project-stub/node_modules/bem/node_modules/q/q.js:1122:26)

Что означает это сообщение? И как сделать, чтобы все заработало?

В статье http://ru.bem.info/tutorials/start-with-project-stub/ используется project-stub из ветки master и там совсем странный результат получается.

Могли бы показать какой-нибудь проект с таким кодом? Я вижу, что есть некий midleware в enb и есть возможность сделать builder, но хотелось бы посмотреть как это сделать "правильно", есть у кого примеры, которыми он может поделиться?

Здравствуйте всем! При прохождение руководства "Создаем свой проект на БЭМ" я столкнулся с проблемой. Я шел по этому руководству, ничего не пропускал и в разделе "BEMHTML-шаблоны" в файл goods.bemhtml я написал/вставил нужный код, а затем решил посмотреть как выглядит index.html и заместо ожидаемого содержимого увидел такую ошибку: http://firepic.org/images/2014-09/14/m707f9za5aj0.png Полез в доки, там черным по белому написано также. Если убрать this.ctx.url и написать, к примеру, какую-нибудь строку типа "test", то все в порядке и страничка index.html отображается нормально.

У меня есть некий блок с Голосованием (.vote). В нем есть две кнопки "За" и "Против" (button.voteaction). Так же у меня есть блок Кнопка (.btn). Кнопки "За"/"Против" должны быть блоками Кнопка (button.voteaction.btn) - т.е. микс получился. При клике на кнопки "За" или "Против" я хочу, что бы они выделялась цветом, например зеленым. Для этого у блока Кнопка есть модификатор green (.btn_theme_green) Т.е. при клике на voteaction с помощью JS я добавляю ей модификатор voteaction_active, но при это я должен добавить и класс btn_theme_green. Использовать в JS классы btn и btn_theme_green не хочется ибо кнопки могут быть заменены на другие (например, .btn34).

Скажите как правильно огранизовать взаимодействие этих двух блоков в JS?

Есть БЭМ блок, у которого прописаны свои поведения. Изначально его на странице нет. но в deps он прописан поэтому все исходники подгружаются. Так вот. Надо чтобы по событию нажатия кнопки, в DOM добавлялся этот блок. Таких блоков может быть добавлено много. Необходимо чтобы он при всем при том еще и работал. Каким образом это сделать?

Привет. Наткнулся на такую проблему. Когда делаю попап

 {
                block : 'popup',
                mods : { autoclosable : true },
               ...
}

Внутри которого есть блок select который в свою очередь использует блок popup, то по клику (выбору их селекта) попап родитель скрывается.

Подскажите как лечить? Знаю про то что блок popup будет переделан, понимаю что скорее всего не подразумевалось что попап может быть в попапе с поведением автоскрытия, но интересны варианты решения.

Кто-нибудь пробовал запускать преобразование большого количества таргетов? bh/html-from-bemjson-i18n намертво застревает, можно 20 минут смотреть, как оно потихоньку съедает память, но ни одного файла так и не появится. Проявляется при превышении определённого количества таргетов, windows 7. До этого при помощи bemtree успешно билдится такое же количество bemjson-файлов.

А пока пришлось наваять такую кашу в enb-make, чтобы билдить порциями https://gist.github.com/xdghcnt/501a7e9b293fd270405c

Эти выходные с BEMup'ом в Питере были просто чудесны! Не говоря про погоду, которая просто была сказочной, программа митапа была насыщенной, а многие приехали в Питер аж из Москвы посмотреть и пообщаться с нами. Спасибо, мы тронуты!! А еще нас много просили показать мастер-класс не самим, а сделать так, чтобы пришедшие участники могли писать код. А это ой как не просто! Почти 2 месяца подготовки заданий и написания тестов, сто раз проигранные в мозгу планы, трансляция, видео, зал, как все это соединить воедино, плюс тестирование на --котиках-- коллегах, и вот он долгожданный день! Это был урок, проверка, и круто, что все получилось! Даже коллеги не из службы БЭМ подходили и говорили: «Круто! Я сделал что-то сам на bem-core!» И да, нам есть, что теперь оттачивать дальше, к ноябрю А вы это, не расслабляйтесь! https://tech.yandex.ru/events/bemup/ :) Видео как всегда через 2 недели в разделе «Выступления», фото уже тут https://www.facebook.com/media/set/?set=a.825215090831947.1073741904.122612334425563&type=1, вопросы к нам можно писать в форум и помечать 2-мя метками — продукт и asktheteam

https://github.com/factorymn/bem-factory/tree/master/common.blocks/fancybox

Обернул fancybox в модульную систему. Мне кажется что не верно в данном случае провайдить jquery. Что там должно быть?

Как и в случае с https://github.com/bem/bem-forum-content-ru/issues/49 плагин работает из скоупа jquery

После клика на кнопку сохранить ничего не происходит. Бесконечно прокручивающийся желтый загрузчик.

После перезагрузки страницы: Метки не обновляются, но заголовок исправляется.

Chrome 36

Есть какое-то стандартное решение?

Здравствуйте. Занимаюсь сабжем. Я - дизайнер, на проекте совмещаю две работы - проектирую/прототипирую интерфейс, а после согласовки - рисую его красиво. Я - ни разу не программист/верстальщик/кто-либо другой.

Давно вожу жалом в сторону БЭМ; он привлекает меня даже не потому, что иногда приходится общаться с программистами, а потому, что вижу в нём помощь в самоорганизации. Проблема старая и всем знакомая - проект крупный, и всё в башке нереально удержать, приходится как-то структурировать.

В общем, довольно прелюдий, вот мой ламеронубский вопрос.

Очевидно, что шапка сайта - блок. Она есть на всех страницах. А внутри шапки еще довольно-таки самостоятельные блоки: логотип, выпадающий список с языками, меню навигации, поп-ап с формой логин/пароль/войти, поп-ап с регистрацией. Или же эти объекты нужно считать элементами блока "шапка"?

То есть, у меня проблемы с логикой методологии, помогите разобраться.

Второй вопрос из этой же серии. В статье на хабре ( http://habrahabr.ru/company/yandex/blog/234905/ ) сказано:

Примеры элементов: навигационное меню (блок), содержащее пункты меню (элементы), таблица (блок), внутри которой строки, ячейки и заголовки (элементы).

В таблице - ячейки. Ячейка - элемент. Допустим, внутри ячейки мы имеем какой-то интерфейс, допустим - форму ввода каких-то данных, грубо говоря - пару полей и кнопка вроде "сохранить". Вот этот интерфейс внутри ячейки считать блоком? Блоком со своими элементами? То есть, может ли элемент внутри себя иметь блок? Как их в таком случае лучше называть? Допустим, таблица - блок с названием b-table. Следовательно, имя ячейки - b-table__cell. А как тогда назвать нашу формочку внутри ячейки, учитывая что она тоже блок? b-table-cell-form? b-cell-form? b-form?

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

Читать, что-то на форумах, в каких-то статьях и не понятном разделе "Руководства" - очень интересно, но кроме каши не дает ничего.

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

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

Нигде не сказано, что новым трендом в данной технологии является выделения mVc в отдельный bundle design. Изобилие bem и enb в разных статьях, в документации должно быть что-то одно.

Ситуация вводящая в ступор:

  • создаем страницу bem create -l desktop.bundles -b index на выходе получаем один файл index.bemjson.js;
  • компилируем bem make, на выходе еще получаем 10 файлов.

WTF? Что за файлы, за что отвечают, являются ли они build файлами и не подлежат ручному редактированию? Почему финишные файлы называются по разному, например index.html _index.css _index.js? Нельзя ли результат компиляции, что не подразумевает ручного редактирование перенести в подпапку distr например?

Очень нужна документация, по каждой технологии, устаревшие технологии документировать не первостепенно. Показывать примеры и с подгрузкой данных через API, и динамическое изменение DOM.

Из того, что не критично, но хотелось бы получить:

  1. право переопределять константы BEM_CLASS и BEM_PARAMS_ATTR, ну не нравится мне i-bem и data-bem, хочу получить js и data-js;
  2. не нравится именование модулей i-bem__dom, i-bem как-то не вписывается в Code Style.

Из документаций которые покрывают 99% вопросов мне нравится https://docs.djangoproject.com/en/dev/ http://symfony.com/doc/current/index.html http://git-scm.com/doc - это те документации, которые рассказывает и о различных приемах, и о назначении, и полноценные use case.

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

Привет. Занимаюсь тем, что пытаюсь внедрить БЭМ стэк на уже готовый к первому релизу проект. Т.к. полностью и сразу мне его на БЭМ переводить никто не дает, то я решил поступить следующим образом, определить бандл components, в components.bemdecl.js объявить зависимости от всех блоков, которые у меня сейчас есть, и понемногу начинать разбивать код сайта на блоки там где я могу это безболезненно сделать. В принципе такой подход работает. Но меня напрягает необходимость после добавления нового блока в мой уровень, прописывать его в deps файла components.bemdecl.js, по-любому кто-то будет забывать это делать. Можно как-то сделать, чтобы у меня собирались все блоки со всеми элементами уровня по умолчанию, без необходимости править components.bemdecl.js?

Привет! Подскажите есть в природе enb или bem-tools технологии для работы с графикой(jpg/png/svg). Например блок с фоновой картинкой(картинка лежит гдето в папке блока)

Интересна реализация похожая на реализацию подключания jquery. Сам пробовал сделать на подобии, но ничего не вышло. Прошу помощи