Привет!
Мы, наконец, выпустили bem-history v4.0.0. История изменений.
Привет!
Мы, наконец, выпустили bem-history v4.0.0. История изменений.
По просьбе в нашем Телеграмм-чатике опубликовали мини-библиотечку bem-calendar с календарем на основе bem-components.
Выглядит он вот так:
Пользуйтесь на здоровье!
Недавно пришлось пописать на PUGJS... долго не смог это терпеть. Пришлось запилить 100 строчек кода, что бы писать нормальные шаблоны на BEMHTML в ExpressJS.
Код доступен как модуль https://www.npmjs.com/package/express-bem-xjst
Он умеет правильно работать с уровнями, кешируется и даже ничего не портит. Пробовал подключать bem-components — шаблонизирует все правильно.
Приятного использования тем, кто больше не может использовать ничего кроме BEM-XJST в шаблонах 😉
Внезапно, пятничным вечером мы обновили БЭМ в вашем React.
Состав изменений:
cls
, ссылка на PR.defaultProps
и propTypes
, ссылка на PR.mix
, ссылка на PR.this.__base(...arguments)
, ссылка на PR.И, конечно, мы обновили документацию, где очень подробно про все написали на русском и английском языках ;)
Привет!
Уже в эту пятницу, 27 января в московском офисе Яндекса пройдет очередной митап по БЭМ для новичков.
Мы продолжим обсуждать темы, которые затронули на предыдущей встрече. Кстати, если вы ее не посетили и еще не успели посмотреть записать — сейчас самое время!
https://www.youtube.com/watch?v=Ai-yt0b8iKE
Кроме того, в программе:
Участие бесплатное, но не забудьте зарегистрироваться!
До встрече на BEMup-е :)
Коротко о том, как мы завершили прошлый год и с чем вошли в новый.
Выкатили раздел БЭМ-библиотек в новом дизайне:
bem-core v4
.uri
в элемент uri__querystring
, который расширяет базовую реализацию одноименного модуля из bem-core
классом Uri
. Методы класса сохранились без изменений.Если вы давно этого ждали — самое время попробовать и рассказать о возможных проблемах до того, как мы выпустим версию.
Выпустили очередную партию мажорных обновлений:
livereload
. Подробнее смотри в документации и в README проекта.npm
-модулей, необходимых для сборки.bower
для поставки библиотек. Теперь все зависимости ставятся через npm
в папку node_modules
.v8.3.1 (v7.4.1)
extend()
. Теперь режим работает как ожидается.this.extend(o1, o2)
.v8.4.0 (v7.6.0)
unquotedAttrs
позволяет не выводить двойные кавычки у тех HTML-атрибутов, значения которых позволяют это сделать.v8.4.1 (v7.6.1)
extend(function(ctx, json) { … })
теперь принимает такие же аргументы, как и остальные колбеки в других режимах. Первый — ссылка на контекст исполнения шаблона (this)
, второй — ссылка на узел BEMJSON, на который сматчился шаблон.undefined
, null
или NaN
. Раньше вы получали результат приведения к строке, что было исправлено.js()
, addJs()
, mix()
, addMix()
, mods()
, addElemMods()
, elemMods()
. Остальные режимы, которые имеют отношение только к HTML, доступны в BEMHTML.this.position
во время использования режима replace()
.v8.5.2 (v7.6.4)
content
{ html: '<unescaped value>' }
. BEM.I18N()
, которая возвращает свой второй аргумент. Это удобно для копирования кода из продакшена в песочницу. "dependencies": { "bem-xjst": "8.5.2"
. Однако продолжаем активно поддерживать две ветки: 7.x и 8.x.Обо всех изменениях читайте в примечаниях к релизу v8.5.2 и v7.6.4. Полный список изменений описан в CHANGELOG.
Выпустили bem-tools 2.0.0, где обновили bem-tools-create. Подробности читайте в документации.
Написали полный и понятный README.
Привет!
Сегодня в bem-history
появилась веточка v4, совместимая с bem-core v4
.
Главное изменение — переименование блока uri
в элемент uri__querystring
, который расширяет базовую реализацию одноименного модуля из bem-core
классом Uri
. Методы класса сохранились без изменений.
Если вы давно этого ждали — самое время попробовать и рассказать о возможных проблемах до того, как мы выпустим версию.
Приятного использования!
Привет!
Только что bem-express получил очередную партию мажорных обновлений:
bem-core
до версии ^4.1.1
и bem-components
до ^5.0.0
.Stylus
к PostCSS
, из коробки поставляется тот же набор плагинов, что и в bem-components
.livereload
. Подробнее см. https://github.com/bem/bem-express/blob/master/development.blocks/livereload/livereload.md и в README проекта.bower
для поставки библиотек. Теперь все зависимости ставятся через npm
в папку node_modules
.Приятных вам апдейтов в новом году!
Привет, друзья!
Мы наконец-то выпустили долгожданную версию bem-components 5.0.0!
Это там самая версия, которая под капотом использует bem-core 4.1.1
.
Как и в bem-components 4.0.0
, в версию вошли сразу 2 набора стилей: исходники на postCSS
и скомпилированный CSS на случай, если вы предпочитаете использовать какой-нибудь препроцессор.
В ближайшее время на bem.info появится документация на эту версию.
Кстати, вы обратили внимание, как круто она выглядит в новом дизайне?
Всем привет!
Кратко об основных изменениях и новостях в мире БЭМ за прошедшие 3 месяца с предыдущего дайджеста.
У нас появились два новых и крутых документа по БЭМ:
bem-tools
и BEMJSON
.Кроме этого, многие другие документы исправлены и дописаны.
Закончили работу над стабильной версией bem-core 4.0.0
. Основные изменения:
i-bem
querystring
.identify
удален опциональный параметр onlyGet
.events
удалены все статические методы.Event
модуля events
удалено поле result
.css
блока page
больше не поддерживает автоматическое добавление условных комментариев для IE.Все подробности можно прочитать в миграционном гайде. А еще лучше — посмотреть выступление @veged: https://events.yandex.ru/lib/talks/3685/ где он подробно рассказывает обо всех изменениях.
bem-components
— уже на этой неделе планируется релиз v4 с новым дизайном, обязательно расскажем об этом релизе отдельно. bem-react-core
. Это новая библиотека, которая позволит писать react-совместимые блоки в bem-терминах. bem-react-components
, библиотека будет содержать react-реализацию блоков из bem-components
. На данный момент готовы блоки Button
, Icon
, Link
, TextInput
, TextArea
, Checkbox
.Выпустили два мажорных, десятки минорных и патчевых релизов bem-xjst
. Самая свежая весия — 8.3.0
. Основные изменения:
mix()
, js()
, attrs()
заменяют значения BEMJSON.applyNext()
.applyNext()
во всех режимах по умолчанию возвращают BEMJSON
.mix
, js
или attrs
теперь можно использовать addMix()
, addJs()
или addAttrs()
.Важно! bem-xjst 8.x
пока несовместима с bem-components
. Прямо сейчас мы работаем над этим.
Кроме bem-xjst 8.0.0
у нас появилась куча новых фич:
runtime lint
mod()/elemMod()
теперь можно использовать без второго аргумента, чтобы сделать подпредикат модификатора с любым значениемappendContent()
и prependContent()
production
с помощью которой страница будет рендерится даже если случились ошибки в отдельных блокахПодробнее обо всех изменениях читайте в release-notes.
ENB 1.4.0
, release-notes.enb
:enb-bemxjst 8.0.0
enb-bem-specs 0.10.0
enb-stylus 2.4.0
enb-css 1.2.2
bem-lib-site
для автоматической сборки документации для библиотеки блоков/проекта на БЭМ.BEM-SDK
.bem-config
: доведен до готовности и ума модуль для работы с конфигурациями БЭМ-проектов.bem-tools
: создан готовый к использованию плагин bem-tools-create
, чтобы его использовать нужно так же установить bem-tools-core
.bem-tools-create
к различным IDE: для Atom, IDEA, и Sublime были собраны рабочие прототипы плагинов для запуска команды bem-tools-create
.gulp-bem-bundle-builder
и попытались внедрить в реальные проекты, запустилось, поняли чего не хватает, работаем дальше.BEM-SDK
: доведены до рабочего состояния модули bem-deps
, bem-graph
для чтения и работы с зависимостями между БЭМ-сущностями, bem-decl
для работы с файлами деклараций БЭМ-сущностей, bem-bundle
, и другие.BEM-SDK
сборка проекта с помощью gulp
.Привет, дорогой друг. Я хочу поделиться историей развития сборки в БЭМ.
Если ты из тех, кто совсем не любит читать большие тексты, то знай «Собирать проекты на БЭМ проще, чем скушать пирожок».
Заинтригован? Приходи на BEMup.
А теперь суровые подробности.
В первом подходе мы решили проверить, возможно ли собрать самый простой БЭМ проект на чём-то, кроме ENB.
Под роль самого простого проекта лучше всего подходит project-stub: один бандл, минимум зависимостей, минимум кода.
В качестве чего-то, кроме ENB, мы выбрали Gulp. Как минимум это один из самых популярных инструментов для сборки с богатой «экосистемой» плагинов. Кроме того, Gulp не является готовым инструментом в отличии от большинства конкуретнов, это фреймворк для написания своих систем сборок. Такие его особенности дают определённую гибкость.
Так появился пакет gulp-bem. Что он умеет делать? Правильно, собирать project-stub
и ничего больше.
Мы тогда даже не ленились и написали постик об этом.
Гипотеза о том, что БЭМ проект можно собрать без использования ENB подтверждена. Можно скушать первый кусочек пирога.
Во втором подходе мы решили, что важно проверить ещё одну гипотезу. Состоит она из двух частей:
project-stub
.Стандартные двухдневные посиделки привели нас к ряду идей.
Модуль: gulp-bem-src.
Почти как gulp.src()
, только bem.src()
.
Ну вы же знаете, что слово БЭМ делает любой модуль как минимум в 2 раза лучше, а тут даже в 3 раза получилось.
Модули: gulp-bem-bundler-fs, gulp-bem-bundler-examples.
Бандлы, они как алкоголь, их можно добыть из чего угодно, даже из других бандлов.
Модуль: gulp-bem-bundle-builder.
Один раз придумали, как собирать ваш CSS и собирайте его так хоть для документации, хоть для вашей бабушки.
Заодно появились хелперы для сборки шаблонов: gulp-bem-xjst, gulp-bh.
В этот раз постик мы не написали. Но пирожок всё равно заслужили, правда-правда!
Между делом появился замечательный BEM SDK — набор атомарных модулей. Каждый модуль решает одну задачу.
В третьем подходе мы делали всё, чтобы наш малыш (BEM SDK) совсем повзрослел. И кажется, ещё совсем чуть-чуть и он отправится в мир похоти и разврата (ENB в живых сервисах).
Вот только некоторые крепыши: bem-naming, bem-walk, bem-decl, bem-graph, bem-deps, bem-bundle.
Чтобы всё произошло, осталось не так уж и много:
i18n
, borschik
, и т.д.1-2 октября мы соберёмся, чтобы совершить ещё один подход к снаряду под номером четыре.
О том, что получилось обязательно расскажем.
Возобновляем традицию BEMup'ов — встреч для тех, кто использует БЭМ и смежные технологии в своих проектах.
Очередной BEMup пройдет в пятницу 30 сентября в московском офисе Яндекса c 19:00 до 22:00. В теплой и дружеской атмосфере команда БЭМ поделится планами и идеями на ближайшее будущее.
Предварительная программа:
Если у вас есть непреодолимое желание выступить на BEMup со своим докладом — пишите нам на info@bem.info.
Форма регистрации: https://events.yandex.ru/events/bemup/30-september-2016/. Присоединяйтесь!
Всем привет!
29 сентября в 19:00 Алексей @zxqfox Ярошевич проведет вебинар про сборку проектов с помощью gulp.
На вебинаре вы научитесь собирать с помощью gulp и модулей любые БЭМ-проекты: как простые статичные HTML-странички для верстки по макету, так и сложные сервисы на node.js, генерирующие BEMJSON в рантайме.
Запись трансляции 19:00 29 сентября доступна по ссылке: https://youtu.be/l1G425VcUUg
Привет. Наверное, стоит отдельно попиарить, что теперь в bem-xjst есть опция runtimeLint. С помощью неё вы сможете получать предупреждения о нежелательных или опасных местах в ваших шаблонах и входных данных (BEMJSON-е). Включить опцию можно начиная с версии 7.2.0 вот так. Предупреждения можно будет поймать в STDERR.
Вот краткое описание какого рода проверки выполняются уже сейчас.
Актуально для тех, чей проект раньше использовал шаблонизатор версии ниже чем v4.x.
Пример BEMJSON-а: { tag: 'input', attrs: { disabled: true } }
Результат с v4.3.2: <input disabled=“true”/>
Результат с v4.3.3: <input disabled/>
Подробнее об изменениях в описании к релизу: https://github.com/bem/bem-xjst/releases/tag/v4.3.3
В 5.0.0 был исправлен баг который приводил к неверному трактованию полей mods
и elemMods
. Подробности есть в описании релиза. Сейчас если вы попытаетесь передать в BEMJSON что-то типа { block: 'b', elemMods: { … } }
, то получите warning.
Такие фокусы будут награждены предупреждением, потому что хороший шаблон не должен иметь сайдэффектов, и не должен изменять входной узел BEMJSON-а. Чтобы изменить модификаторы вы должны использовать this.mods
.
Для генерации HTML-класса используйте режим cls()
.
Для генерации параметров для клиентского JS используйте режим js()
.
Иначе будет вываливаться предупреждение.
Имена блоков, элементов, модификаторов, а так же значения модификаторов не должны содержать разделителей имени элемента (обычно это __
) и разделителей модификаторов (_
).
Всевозможная акробатика вида { block: 'b', mix: [ { mods: { type: 'test' } }, { mods: { type: 'shmest' } } ] }
, будет награждена предупреждением.
Если у вас есть идеи какие проверки можно добавить еще — пишите мне. Спасибо.
Продолжение следует.
Настоящим постом хочу продемонстрировать вам как будет выглядет API bem-xjst v8.x. Все пока на стадии RC, поэтому хочу выслушать ваше мнение по поводу всего этого.
Изменения, которые войдут в v8.x
TLDR; Песочница bem-xjst v8.x RC: https://goo.gl/ZeY4xL, в которой можно попробовать все эти вкусности…
Сейчас значение из шаблона режима content()
, bem()
, cls()
, tag()
переопределяет значение указанное в BEMJSON. Если вам нужно расширить значение из BEMJSON в шаблоне нужно использовать applyNext()
и this.extend()
/concat()
.
Однако режимы mix()
, js()
, attrs()
сейчас расширяют значение из BEMJSON.
Разное поведение режимов вносит некоторый раздрай и постоянно приходится держать в уме кто как себя ведет.
В v8.x мы привели все режимы к одинаковому явному поведению: переопределение значения из BEMJSON. Если вам нужно добавить что-либо, то теперь это можно будет сделать в явном виде — см п.3.
mods()
и elemMods()
для установки модификаторов. (minor)Под капотом эти режимы просто шорткаты к уже привычным всем конструкциям:
// mods()({something: myValue})
def()(function() {
this.mods = {something: myValue};
return applyNext();
});
и
// elemMods()({something: myValue})
def()(function() {
this.elemMods = {something: myValue};
return applyNext();
});
Как видно из примеров режимы mods()
и elemMods()
не имеют своей собственно очереди шаблонов, а добавляют шаблоны в стек к режиму def()
.
По умолчанию mods()
и elemMods()
возвратят вам значения из this.mods
и this.elemMods
соответственно.
Пример:
// BEMJSON
{ block: 'b' }
//Шаблоны
block('b').def()(function() {
return JSON.stringify(apply('mods'));
});
//Результатом будет:
[]
Так как все режимы теперь переопределяют значение, то чтобы компенсировать необходимость писать applyNext()
для накапливания результата были введены шорткаты для уже существующих режимов add*()
.
Под капотом addJs()({ somekey: someval })
это
js()(function() {
return this.extend(applyNext(), { somekey: someval });
});
Под капотом addMix()({block: 'mixed' })
это
mix()(function() {
var res = applyNext();
if (!Array.isArray(res)) res = [ res ];
return res.push({block: 'mixed' })
})
Для остальных режимов аналогично.
Как видно из примера шорткаты add*()
не имеют своего стека шаблонов, а просто добавляют шаблон в стек соответствующего режима.
И, естественно, вы можете накапливать результат:
// Шаблоны
block('b')(
addJs()({ a: 1 })
addJs()({ b: 2 })
addJs()({ c: 3 })
);
// BEMJSON
{ block: 'b' }
// Результат:
<div class="b b_type_awesome i-bem" data-bem='{"b":{"a":1,"b":2,"c":3}}'></div>
// Шаблоны:
block('b')(
appendContent()(', templates!'),
appendContent()('!!1'),
prependContent()('(〜 ̄▽ ̄)〜 ')
);
// BEMJSON
{ block: 'b', content: 'Hello' }
// Результат:
<div class="b">(〜 ̄▽ ̄)〜 Hello, templates!!!1</div>
Как вы уже наверное догадались, это тоже шорткаты и они добавляют шаблоны в стек режима content()
. Пример:
// appendContent()(', templates!') это тоже самое что и:
content()(function() {
return [
applyNext(),
', templates!'
];
});
Привет!
Мы приготовили для вас демо-проект на ASP.NET MVC, иллюстрирующий решение типовых задач с помощью БЭМ-инструментов.
В readme подробно описано, как всё работает. Вы можете не только посмотреть исходный код, но и запустить демо-приложение на своем компьютере, чтобы попробовать в действии!
Завтра буду рассказывать про БЭМ и ASP.NET на Я.Субботнике. Подключайтесь к трансляции!
Опубликовали два новых документа по методологии
Быстрый старт: https://ru.bem.info/methodology/quick-start/
БЭМ для CSS: https://ru.bem.info/methodology/css/
Приятного чтения :)
Привет!
18 августа в 19:00 мы с нашими друзьями из Front-end Science проведем очередной БЭМап в Киеве!
В программе:
Подробности и форма регистрации здесь.
Как и обещал, выпустил Pobem@v1.
:
в декларациях блоковБыло
:block(block)
Стало
block(block)
Больше не нужно для "каскадных" деклараций блоков (block, elem, mod) использовать &
. Плагин сам склеивает и разбивает где нужно.
Было
:block(block) {
&:elem(elem) {}
&:mod(mod val) {
width: 100px;
&:mod(active) {
&:elem(elem5) {}
}
}
&:elem(elem1) {}
&:elem(elem3) {}
}
Стало
block(block) {
elem(elem) {}
mod(mod val) {
width: 100px;
mod(active) {
elem(elem5) {}
}
}
elem(elem1) {}
elem(elem3) {}
}
Такое название прощё запоминается
Было
:block(block):elem(elem):mod(mod val)
Стало
block(block).elem(elem).mod(mod val)
В качестве разделителя между mod
val
могут служить:
,
->
Названия блоков могут быть как в кавычках, так и без.
block(block).mod(mod val) === block('block').mod('mod', 'val')
Пришло время поговорить об успехах и продвижениях в работе над сборкой с помощью BEM SDK.
На вебинаре мы расскажем вам:
С нашими новыми модулями для компонентной сборки ваши волосы станут чистыми и шелковистыми, а глаза перестанут быть красными.
Трансляция начнется в 19:00 28 июля на отдельной странице. Ведущий вебинара — @zxqfox.
От создателей легендарного bemmet очередная штука, позволяющая писать меньше букв — bem-indent-syntax.
Demo вместо тысячи слов.
PS: Если наберется 10 звезд на github, сделаю плагин для Sublime ;)
Всем привет,
Кратко об основных событиях в мире БЭМ за последние 4 месяца с предыдущего дайджеста.
Новости библиотек
bem-core 4.0.0-rc.1
. Подробнее о релизе можно прочитать на форуме bem.info. Основные изменения коснулись усовершенствования i-bem.js
. Если вы готовы — этот релиз уже сейчас можно щупать, крутить и внедрять в свои проекты. Стабильная версия выйдет совсем скоро. Не забывайте сообщать нам обо всех найденных ошибках.bem-components 3.0.0
которая работает с bem-core 3.0.1
. Несмотря на то, что релиз мажорный — переход на него должен быть практически безболезненным. Подробнее о релизе читайте здесь.bem-history 3.2.0
. Основное изменение — поддержка bem-core 3.x
в bower.json. И, конечно, несколько багфиксов в комплекте.bem-incubator
в bem-contrib
. Это название гораздо лучше отражает предназначение организации. Если вы используете (или разрабатываете) какие-либо пакеты, следует обновить пути к репозиторию (какое-то время github поддерживает редиректы автоматически). Можно использовать инструкцию.Новости технологий
bem-xjst
. Самая свежая весия — 6.5.1 Основные изменения: Подробнее обо всех изменениях bem-xjst
читайте в release-notes, которые подробно пишутся к каждому релизу: https://github.com/bem/bem-xjst/releases.
Новости инструментов
Активно работали над ENB:
ENB 1.3
Работали над плагинами для ENB:
enb-bemxjst 6.5.0
enb-bem-examples 1.0.2
enb-stylus 2.3.3
enb-bh 1.2.0
enb-bem-techs 2.2.1
enb-bem-i18n 1.1.1
Новости сайта
Новости мероприятий
Интересные темы на форуме
2 года назад) некий @tadatuta на хакатоне написал тулзу для блогов из маркдауна и бэм-стека. Так вот после 2х лет забвения понадобилась мне тулза подобная чтобы на один манер собирать доки, блог, просто странички и тд. В общем случился форк, перерождение и отличный швейцарский нож для статики на bem-xjst и makrdown. https://github.com/awinogradov/bemark
Всем привет!
Сегодня мы зарелизили bem-core@v4.0.0-rc.1.
Это релиз-кандидат большого релиза bem-core@v4.0.0, который появится совсем скоро.
Мы сделали достаточно большое количество обратно несовместимых изменений, ради того, чтобы API стало легче понять, запомнить и удобнее использовать.
Уже доступен миграционный гайд и обновлённая документация на i-bem.js
. Если вы не используете bem-components, то можно начинать изучать, крутить, вертеть и подключать к своим проектам новую версию bem-core.
Что нового и важного:
Значительно упрощено и унифицировано API работы со всеми видами событий:
this._domEvents().on('click', this._onClick);
this._events(this.findChildBlock('button')).on('click', this._onButtonClick);
Кроме того, теперь все основные способы использования не требуют самостоятельного удаления подписок при уничтожении экземпляра — отписка происходит автоматически. Подробнее в миграционном гайде.
i-bem
и i-bem-dom
и стали частью ядра. Теперь с элементами работать так же удобно, как с блоками:this.findChildElem('button').setMod('disabled');
Подробнее в миграционном гайде.
Функциональность элемента collection
блока i-bem
перестала быть опциональной. Все методы, возвращавшие несколько БЭМ-сущностей, теперь возвращают коллекции:
this.findChildBlocks('control').setMod('disabled');
live
) разделена на две отдельные части — поле lazyInit
и метод onInit()
. Более явные названия без смешивания в одном месте двух вещей. Подробнее в миграционном гайде.Все подробности о миграции на новую версию читайте в миграционном гайде. А документация на i-bem.js
уже содержит полностью обновлённую информацию.
Мы просим вас писать нам любой фидбек о найденных ошибках и проблемах на форум или сразу в тикеты, чтобы мы могли сделать обратно несовместимые исправления до полного релиза bem-core@v4.0.0.
P. S. Релиз-кандидат bem-components с bem-core@v4 внутри будет в ближайшее время. Также мы ещё допишем английскую версию документации, чейнджлог и миграционный гайд.
Выкатили украинскую версию
Будут ещё переводы на другие языки. Если хотите помочь или заметили ошибку — пишите.
Привет!
Только что вышел релиз bem-history 3.2.0.
Основное изменение — поддержка bem-core 3.x
в bower.json
.
И, конечно, несколько багфиксов в комплекте.
Предполагается «бесплатное» обновление.
Привет!
Мы под покровом ночи выпустили bem-components 3.0.0!
Несмотря на мажорную версию, обновление должно быть «бесплатным»: просто обновите версию в bower.json
и пересоберите проект.
Тогда почему мажор? Потому что:
bem-core
до версии 3.0.1
, где оторвали FastClick в пользу собственного решения для iOSbem-xjst
(вы ведь уже давно обновились?)*.bemhtml
в *.bemhtml.js
(даешь подсветку синтаксиса!)Теперь версия публикуется с предкомпилированным CSS, так что больше нет необходимости использовать Stylus для сборки (вреда однако ж тоже никакого ;)
Кроме того, версия теперь публикуется еще и в npm
.
И как всегда, помимо основного варианта поставки в виде исходников, доступна не требующая сборки dist-поставка для локальной установки в проект и для прямого подключения с CDN.
Подробно со списком изменений можно ознакомиться здесь.
Приятного обновления!
PS: project-stub уже обновлен.
Новый вебинар по БЭМ совсем скоро!
17 мая в 19:00 мы поговорим об использовании BEMHTML и BEMTREE. Расскажем, как все это можно использовать с любыми источниками данных (файловой системой, базой данных, HTTP API или бэкендом на любом языке).
Поговорим о том, как писать шаблоны в стиле CSS, как повторно использовать разметку, как легко доставлять обновления разметки на несколько страниц или даже проектов.
Затронем работу как на сервере, так и на клиенте.
Обратите внимание, трансляция начнется в 19:00 17 мая на отдельной странице.