BH (BEM HTML) — компилирующий обработчик декларативных шаблонов для JS.

BH
Логотип программы BH
Скриншот программы BH
Тип Шаблонизатор
Разработчик Сообщество БЭМ
Написана на JS, PHP (официальные версии)
Операционная система Кроссплатформенное программное обеспечение
Лицензия MIT License
Сайт bem.github.io/bh

BH позволяет видоизменять узлы DOM-дерева аналогично тому, как это делает CSS — в декларативной форме.

Пример править

Имея декларацию на JS:

bh.match('button', function(ctx) {
    ctx.tag('button');
});
bh.match('button_legacy', function(ctx, json) {
    ctx.tag('input');
    ctx.attr('type', 'button');
    ctx.attr('value', json.content);
});
bh.match('button_submit', function(ctx, json) {
    ctx.tag('input');
    ctx.attr('type', 'submit');
    ctx.attr('value', json.content);
});

Или аналогичную декларацию в синтаксисе PHP:

$bh->match('button', function($ctx) {
    $ctx->tag('button');
});
$bh->match('button_legacy', function($ctx, $json) {
    $ctx->tag('input');
    $ctx->attr('type', 'button');
    $ctx->attr('value', $json->content);
});
$bh->match('button_submit', function($ctx, $json) {
    $ctx->tag('input');
    $ctx->attr('type', 'submit');
    $ctx->attr('value', $json->content);
});

И входные данные:

[ { "block" : "button",
    "content" : "Просто кнопка" },
  { "block" : "button",
    "mods" : { "submit": true },
    "content" : "Кнопка отправить" },
  { "block" : "button",
    "mods" : { "legacy": true },
    "content" : "Кнопка по старому стилю" },
  { "block" : "button",
    "mods" : { "legacy": true, "submit": true },
    "content" : "Кнопка отправить по старому стилю" } ]

Получим результат:

<button class="button">Просто кнопка</button>
<input class="button button_submit" type="submit" value="Кнопка отправить"/>
<input class="button button_legacy" type="button" value="Кнопка по старому стилю"/>
<input class="button button_legacy button_submit" type="submit" value="Кнопка отправить по старому стилю"/>

Реализации править

Официальные реализации BH написаны на JavaScript и PHP.

См. также править

Ссылки править

Примечания править