Войти с помощью github
Форум /

Привет. Наверное, стоит отдельно попиарить, что теперь в 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

elemMods вместе с block вместо mods

В 5.0.0 был исправлен баг который приводил к неверному трактованию полей mods и elemMods. Подробности есть в описании релиза. Сейчас если вы попытаетесь передать в BEMJSON что-то типа { block: 'b', elemMods: { … } }, то получите warning.

Изменения this.ctx.mods через шаблоны

Такие фокусы будут награждены предупреждением, потому что хороший шаблон не должен иметь сайдэффектов, и не должен изменять входной узел BEMJSON-а. Чтобы изменить модификаторы вы должны использовать this.mods.

Атрибуты class или data-bem созданные через BEMJSON-поле attrs или шаблон режима attrs()

Для генерации HTML-класса используйте режим cls(). Для генерации параметров для клиентского JS используйте режим js(). Иначе будет вываливаться предупреждение.

Проверки нейминга

Имена блоков, элементов, модификаторов, а так же значения модификаторов не должны содержать разделителей имени элемента (обычно это __) и разделителей модификаторов (_).

Миксы модификаторов к таким же модификаторам

Всевозможная акробатика вида { block: 'b', mix: [ { mods: { type: 'test' } }, { mods: { type: 'shmest' } } ] }, будет награждена предупреждением.


Если у вас есть идеи какие проверки можно добавить еще — пишите мне. Спасибо.

Продолжение следует.