bemer: декларативная шаблонизация на учебном примере —...

28
1

Upload: yandex

Post on 15-Jan-2015

325 views

Category:

Technology


5 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

1

Page 2: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

MoscowJS 14, 28 августа 2014

Bemer: декларативная шаблонизация на учебном примере

Артём Курбатов

2

Page 3: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Артём Курбатов

3

[email protected]

@tenorak

github.com/tenorok

разработчик интерфейсов в Яндексe

Page 4: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Содержание

• Общие принципы

• Шаблонизатор Bemer

• Демонстрация

4

Page 5: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Block Element Modifier

5

Page 6: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

6

ru.bem.info

Page 7: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

7

БЭМ — это просто!

Page 8: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Императивный?

8

<h1 style="font-size: 24px; color: red;">Title</h1>

<p style="font-size: 14px; line-height: 1.5">Paragraph 1</p>

Page 9: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Декларативный!

9

h1 { font-size: 24px; color: red; } !p { font-size: 14px; line-height: 1.5; }

<h1>Title</h1>

<p>Paragraph 1</p>

<p>Paragraph 2</p>

Page 10: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Императивный…

10

<ul class="menu"> {{#for items}} <li> {{#if current}} <b></b> {{else}} <a></a> {{/if}} </li> {{/for}} </ul>

Page 11: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Декларативный!

11

bemer .match('menu', { tag: 'ul' }) .match('menu__item', { tag: 'li', content: {tag: 'a'} });

bemer.match('menu__item_current', { content: {tag: 'b'} });

Page 12: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Абстракции в БЭМ-терминах

• CSS — из коробки !

!

12

Page 13: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Абстракции в БЭМ-терминах

• CSS — из коробки • шаблоны — БЭМ-шаблонизаторы !

13

Page 14: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Абстракции в БЭМ-терминах

• CSS — из коробки • шаблоны — БЭМ-шаблонизаторы • клиентский JavaScript: i-bem.js

14

bower install i-bem

ru.bem.info/libs/bem-bl/dev/desktop/i-bem

Page 15: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Шаблонизатор Bemer

15

Page 16: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Преимущества

• Простота • чистый JavaScript без компиляции • синтаксис как в i-bem.js

16

Page 17: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Преимущества

17

• Гибкость • звёздочки в любой части селектора !

!

!

!

!

input__*_theme_*

Page 18: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Преимущества

18

• Гибкость • звёздочки в любой части селектора !

!

• селекторы на элемент блока с модификатором !

!

input__*_theme_*

input_size_m__clear

Page 19: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Преимущества

• Гибкость • звёздочки в любой части селектора !

!

• селекторы на элемент блока с модификатором !

!

• весь код разделён на модули

19

input__*_theme_*

input_size_m__clear

tenorok.github.io/bemer/jsdoc

Page 20: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Недостатки

• Чистый JavaScript без сахара • Медленнее аналогов !

!

!

20

Page 21: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Другие шаблонизаторы

• BH !

!

• BEMHTML

21

github.com/enb-make/bh

ru.bem.info/technology/bemhtml

Page 22: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Использование

Шаблонизатор Bemer

22

Page 23: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Установка

23

bower install bemer

npm install bemer

Bower

NPM

Page 24: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Подключение

24

В браузере

В Node.js

<script src="bower_components/bemer/bemer.min.js"></script>

var bemer = require('bemer');

Page 25: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Демонстрация

Шаблонизатор Bemer

25

tenorok.github.io/bemer

Page 26: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Что дальше?

26

github.com/tenorok/bemer

Page 27: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

27

!ru.bem.info  ru.bem.info/forum  @bem_ru  #b_  

[email protected]

БЭМ — это просто!

Page 28: Bemer: декларативная шаблонизация на учебном примере — Артём Курбатов, Яндекс

Разработчик интерфейсов

[email protected]/tenorok

Спасибо

Артём Курбатов

28