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

28
1

Upload: moscowjs

Post on 14-Jun-2015

522 views

Category:

Software


2 download

DESCRIPTION

Видео: http://youtu.be/4uFDrReOIpA

TRANSCRIPT

Page 1: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

1

Page 2: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

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

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

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

2

Page 3: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

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

3

[email protected]

@tenorak

github.com/tenorok

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

Page 4: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

Содержание

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

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

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

4

Page 5: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

Block Element Modifier

5

Page 6: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

6

ru.bem.info

Page 7: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

7

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

Page 8: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

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

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: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

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

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: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

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

10

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

Page 11: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

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

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: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

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

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

!

12

Page 13: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

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

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

13

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

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

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

14

bower install i-bem

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

Page 15: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

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

15

Page 16: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

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

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

16

Page 17: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

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

17

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

!

!

!

!

input__*_theme_*

Page 18: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

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

18

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

!

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

!

input__*_theme_*

input_size_m__clear

Page 19: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

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

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

!

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

!

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

19

input__*_theme_*

input_size_m__clear

tenorok.github.io/bemer/jsdoc

Page 20: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

Недостатки

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

!

!

20

Page 21: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

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

• BH !

!

• BEMHTML

21

github.com/enb-make/bh

ru.bem.info/technology/bemhtml

Page 22: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

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

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

22

Page 23: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

Установка

23

bower install bemer

npm install bemer

Bower

NPM

Page 24: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

Подключение

24

В браузере

В Node.js

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

var bemer = require('bemer');

Page 25: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

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

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

25

tenorok.github.io/bemer

Page 26: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

Что дальше?

26

github.com/tenorok/bemer

Page 27: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

27

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

[email protected]

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

Page 28: Bemer: декларативная шаблонизация на учебном примере. Артём Курбатов. MoscowJS 14

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

[email protected]/tenorok

Спасибо

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

28