Skip to content

Instantly share code, notes, and snippets.

@miripiruni
Created February 24, 2016 23:57
Show Gist options
  • Save miripiruni/8616976d40f280b20313 to your computer and use it in GitHub Desktop.
Save miripiruni/8616976d40f280b20313 to your computer and use it in GitHub Desktop.
Правки по документации bem-xjst
https://ru.bem.info/technology/bemhtml/v2/rationale/
Отличительные черты и Преимущества
Расписать с примерами
— Возможность добавления шаблонов в рантайме.
— Не требует компиляции шаблонов.
Поставить ссылки:
— BEMHTML
— BEMJSON
— BEMTREE
> Создание бандла https://github.com/bem/bem-xjst/wiki/api#%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B1%D0%B0%D0%BD%D0%B4%D0%BB%D0%B0
> /// пользовательские шаблоны
> убрать
> src/templates/*.bemhtml.js to templates.js
TODO
> compile добавить предложение что generate эффективнее
> https://github.com/bem/bem-xjst/wiki/api#%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%BE%D0%B2
DONE.
> Добавить пример block('b1').mod('a', true)`
DONE: https://github.com/bem/bem-xjst/wiki/data#mods
> Добавить пример матчинга к mod(modName, modVal)
DONE: https://github.com/bem/bem-xjst/wiki/templates-syntax#mod
Добавил аналогичный пример к elemMod: https://github.com/bem/bem-xjst/wiki/templates-syntax#elemmod
> Изменить порядок перечисления мод в доке.
> block, elem, mod, elemMod, match.
DONE: https://github.com/bem/bem-xjst/wiki/templates-syntax#%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA-%D0%BF%D0%BE%D0%B4%D0%BF%D1%80%D0%B5%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D0%B2
> Выделить везде {Type} в jsdoc
DONE.
> сделать перенос строки если не влезает и возникает скрол
DONE.
> https://github.com/bem/bem-xjst/wiki/templates-syntax#%D0%A2%D0%B5%D0%BB%D0%BE-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%B0
> Поправить пример про link.
DONE.
> Наприсать, что движком BEMTREE используется не все моды.
DONE: https://github.com/bem/bem-xjst/wiki/templates-syntax#bemtree
> mods будет проигнорирован если указаны elem и elemMods. Пример:
> НЕТ — он выставляет контекст.
Исправил.
> mods будет проигнорирован если указаны elem и elemMods
> КАША разъяснить что куда игнорируется
TODO
https://github.com/bem/bem-xjst/wiki/data#elemmods если
Что над чем имеет приоритет
TODO
https://github.com/bem/bem-xjst/wiki/data#elem result
> ссылку про js param
DONE.
> отдельно подсветку HTML
DONE.
> {Object[]}
DONE.
> mix добавить пример примешан массив
DONE https://github.com/bem/bem-xjst/wiki/templates-syntax#mix
> Разделение сделать на бэм-предметную область и другие
Пересортировал. Но делить не стал. Так как тут и БЭМ-ориентированные и хелперы и content/def которые непонятно куда отнести.
Посчитал, что деление не оправдано.
———————
Замечания к документу «Синтаксис шаблонов»
подпредикаты перед блоком
> Каждый шаблон должен содержать подпредикат имени блока — запятая
DONE https://github.com/bem/bem-xjst/wiki/templates-syntax#block
> примеры bemjson-а на это сматчилось а на это не сматчилось
DONE: https://github.com/bem/bem-xjst/wiki/templates-syntax#block
> имя параметра elemName поправить на name
DONE: https://github.com/bem/bem-xjst/wiki/templates-syntax#elem
> todo — ссылка В контексте функции будут доступны все поля доступные в теле шаблона.
DONE: https://github.com/bem/bem-xjst/wiki/templates-syntax#match
> Пояснить про порядок проверки подпредикатов
> Порядок выполнения кастомных предикатов гарантируется.
DONE: https://github.com/bem/bem-xjst/wiki/templates-syntax#match
подпредикаты
— селекторы
— подпредикаты свойств
> русифицируем слова мода — режим
DONE.
> i-bem про режим js
> убрать ()
> data-bem
DONE: https://github.com/bem/bem-xjst/wiki/templates-syntax#%D0%A2%D0%B5%D0%BB%D0%BE-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%B0
Разбить пример на
BEMJSON: { block: 'yalink', url: 'https://yandex.ru' }
Шаблон:
```js
block('yalink')(
tag()('a'),
attrs()(function() {
return { href: this.ctx.url };
})
);
```
Результат шаблонизации:
```html
<a href="https://yandex.ru">Яндекс</a>
```
> каждый подпредикат — это вызов
> а тело это отдельный вызов
DONE: https://github.com/bem/bem-xjst/wiki/templates-syntax#%D0%A2%D0%B5%D0%BB%D0%BE-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%B0
> посмотреть существующие кейсы def и добавить сюда пример.
TODO
> Режим является особым и не стоит использовать просто так.
DONE: https://github.com/bem/bem-xjst/wiki/templates-syntax#def
> bem — указывает шаблонизатору нужно ли добавлять классы и js-параметры для самой БЭМ-сущности и её миксов.
DONE.
> Изменить порядок
> tag
> attrs
> content
> mix
> js
> bem
> js/ mix / tag из bemjson
> cls
DONE!
По умолчанию будет взято из поля content текущего узла BEMJSON.
> Общая схема:
> Что такое
> пример
> как интерферирует
> пример интерфери
TODO
> ONCE — объявляем депрекатед
TODO
> REPLACE — нельзя использовать для замены себя с оберткой
DONE: https://github.com/bem/bem-xjst/wiki/templates-syntax#replace
> block('b2').content — убрать
Поправил пример: https://github.com/bem/bem-xjst/wiki/templates-syntax#replace
> https://github.com/bem/bem-xjst/wiki/templates-syntax#wrap заменить пример
Упростил. https://github.com/bem/bem-xjst/wiki/templates-syntax#wrap
сматчились на узел, а рендерим произвольную сущность
Результат шаблонизации BEMHTML
https://github.com/bem/bem-xjst/wiki/templates-syntax#%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5-%D0%BC%D0%BE%D0%B4%D1%8Bhttps://github.com/bem/bem-xjst/wiki/templates-syntax#%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5-%D0%BC%D0%BE%D0%B4%D1%8B
Переделать пример.
вычисление сущности.
TODO
> кастомные — русифицировать
DONE
КОНТЕКСТ
> элемент, явно указанный
> elem mods elemmods явно указанный
DONE.
> В тики ! this.mods и this.elemMods
DONE.
> Неправильно — избыточно
> Правильно — достаточно
DONE
> Пересмотреть пример:
> https://github.com/bem/bem-xjst/wiki/templates-context#%D0%A2%D0%B5%D0%BA%D1%83%D1%89%D0%B8%D0%B9-%D1%83%D0%B7%D0%B5%D0%BB-bemjson
DONE.
> JSDOC, примеры, заголовки
> https://github.com/bem/bem-xjst/wiki/templates-context#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F
DONE
> https://github.com/bem/bem-xjst/wiki/templates-context#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F
> отметить что экранируется по умолчанию
DONE!
> сначал про позицию, затем про isF isL
DONE!
> Пример для position — каждому третьему класс
TODO
> https://github.com/bem/bem-xjst/wiki/runtime#wildcard-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B
> Добавить что block(*) сматится на пустой объект в том числе
DONE!
страшные кейсы: фак
block('b1')(
content()([
{ block: 'b2' },
{ block: 'b3' }, // this.isLast() === false
'text'
])
);
> this.generateId() — генерирует для текущего узла
DONE
> tag()(''), — убрать
DONE
TODO isArray — deprecated
TODO isSimple — deprecated
TODO: разобраться с реаплаем
— было бы удобно иметь старый реаплай, который не завязан на контекст.
— Если нельзя выкинуть то отказаться от this.
— Проверить выполняюся ли oninit
> https://github.com/bem/bem-xjst/wiki/templates-context#thisreapply пример — в js-параметры HTML
DONE
> доступный в теле шаблона — с запятых
DONE! Спасибо!
> https://github.com/bem/bem-xjst/wiki/templates-context#%D0%9A%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%BD%D1%8B%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8F
> Smart trim
TODO
>Либо функцией — 1 1 11
> убрать слова
DONE
oninit — внутри шаблонов
BEMContext — вне шаблонов
oninit — несколько примеров
TODO на apply нет тестов
TODO local — deprecated
> Это поведение описано разделе про режимы.
DONE.
> (они же условия или матчеры) — удаляем.
DONE!
Если для какого-то узла предикаты шаблона возвращают true, то выполняется тело шаблона. — в другой
> https://github.com/bem/bem-xjst/wiki/runtime#%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B-%D0%BD%D0%B0-%D0%BB%D1%8E%D0%B1%D1%8B%D0%B5-%D1%81%D1%83%D1%89%D0%BD%D0%BE%D1%81%D1%82%D0%B8
> пример counter
> block(‘*’).match(function() { return this.ctx.counter; }).mix()({ … })
DONE!
> Сослаться на apply во время mode() https://github.com/bem/bem-xjst/wiki/runtime#apply
DONE!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment