i-bem.js: javascript в БЭМ-терминах. Елена Глухова, Варвара...

47
YAC-2011, Москва, 19 сентября 2011 года Варвара Степанова JavaScript в БЭМ-терминах Wednesday, October 5, 2011

Upload: yaevents

Post on 05-Dec-2014

7.129 views

Category:

Technology


8 download

DESCRIPTION

Елена Глухова, Яндекс Верстальщик, разработчик веб-интерфейсов. Работает в Яндексе с 2008 года. Варвара Степанова, Яндекс Закончила Петрозаводский государственный университет. Работает в Яндексе с 2008 года разработчиком интерфейсов. Разрабатывала проекты Яндекс.Ответы и Яндекс.Фотки. 

Последние полтора года Елена Глухова и Варвара Степанова совместно работают вместе над внутренним интерфейсным фреймворком, помогающим единообразно делать сервисы Яндекса. В последнее время также заняты разработкой подобного интерфейсного фреймворка в open source. Тема доклада i-bem.js: JavaScript в БЭМ-терминах. Тезисы Разрабатывая сайты по методологии БЭМ, мы используем единую предметную область во всех технологиях: CSS, шаблоны, JavaScript. Для того чтобы это было возможно, в библиотеке блоков bem-bl реализовано ядро клиентского JS-фреймворка, которое позволяет работать со страницей в терминах БЭМ, на следующем уровне абстракции над DOM-представлением. В этом мастер-классе показаны ключевые моменты использования такого подхода для написания клиентского JS. Мы создаём составной блок, использующий JS-функциональность входящих в него маленьких блоков. В результате всё работает, и никакого копипаста.

TRANSCRIPT

Page 1: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

YAC-2011, Москва, 19 сентября 2011 года

Варвара Степанова

JavaScript в БЭМ-терминах

Wednesday, October 5, 2011

Page 2: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

clck.ru/L45Cшпаргалка к мастер-классу

JavaScript в терминах БЭМ

Wednesday, October 5, 2011

Page 3: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Блоки и элементы

3

Wednesday, October 5, 2011

Page 4: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Модификаторы

4

Wednesday, October 5, 2011

Page 5: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Уровни переопределения

5

Wednesday, October 5, 2011

Page 6: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Составные блоки

6

Wednesday, October 5, 2011

Page 7: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

JS-реализация блока i-bem

7

Wednesday, October 5, 2011

Page 8: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Некоторые особенностиFeatures

8

Wednesday, October 5, 2011

Page 9: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Некоторые особенностиFeatures

9

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

Wednesday, October 5, 2011

Page 10: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Некоторые особенностиFeatures

10

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

Отложенная инициализация

Wednesday, October 5, 2011

Page 11: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Некоторые особенностиFeatures

11

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

Отложенная инициализация

Использование вложенных блоков

Wednesday, October 5, 2011

Page 12: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Некоторые особенностиFeatures

12

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

Отложенная инициализация

Использование вложенных блоков

Реакция на изменение модификаторов

Wednesday, October 5, 2011

Page 13: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Некоторые особенностиFeatures

13

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

Отложенная инициализация

Использование вложенных блоков

Реакция на изменение модификаторов

Расширение поведения модификаторами и уровнями переопределения

Wednesday, October 5, 2011

Page 14: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Что будем делать?

14

Wednesday, October 5, 2011

Page 15: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

b-cutБлок-cut

15

Wednesday, October 5, 2011

Page 16: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

b-cutБлок-cut

16

Wednesday, October 5, 2011

Page 17: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Инструменты и окружение

17

Wednesday, October 5, 2011

Page 18: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Инструменты и окружение

18

Локальный web-сервер

БЭМ-инструменты

github.com/bem/bem-tools

или clck.ru/Kz8v

Wednesday, October 5, 2011

Page 19: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Инициализация проекта

19

Wednesday, October 5, 2011

Page 20: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Инициализация проекта

20

Клонируем репозиторий

git://github.com/toivonen/yac2011-bem-js-docs.git

make

Получает библиотеку bem-bl

Собирает страницы

Wednesday, October 5, 2011

Page 21: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Структура проекта

21

bem-bl/blocks/pages/GNUmakefile

Wednesday, October 5, 2011

Page 22: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

22

bem-bl/ blocks-common/ blocks-desktop/blocks/pages/GNUmakefile

Структура проекта

Wednesday, October 5, 2011

Page 23: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

23

bem-bl/ blocks-common/ i-bem/ ... blocks-desktop/blocks/pages/GNUmakefile

Структура проекта

Wednesday, October 5, 2011

Page 24: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

24

bem-bl/blocks/ b-cut/ ...pages/GNUmakefile

Структура проекта

Wednesday, October 5, 2011

Page 25: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

25

bem-bl/blocks/pages/ index/ index.bemjson.js ...GNUmakefile

Структура проекта

Wednesday, October 5, 2011

Page 26: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

26

bem-bl/blocks/pages/GNUmakefile

Структура проекта

Wednesday, October 5, 2011

Page 27: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Пишем код

27

Wednesday, October 5, 2011

Page 28: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Основные элементы блока

28

<div class=”b-cut”> <a class=”b-link b-link_pseudo_yes b-cut__opener i-bem” onclick=”return {"b-link":{}}”> ... </a> <div class=”b-cut__content”> ... </div></div>

Wednesday, October 5, 2011

Page 29: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Начальное состояние

29

<div class=”b-cut”> <a class=”b-link b-link_pseudo_yes b-cut__opener i-bem” onclick=”return {"b-link":{}}”> ... </a> <div class=”b-cut__content”> ... </div></div>

Wednesday, October 5, 2011

Page 30: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Открытый кат

30

<div class=”b-cut”> <a class=”b-link b-link_pseudo_yes b-cut__opener b-cut__opener_visibility_hidden i-bem” onclick=”return {"b-link":{}}”> ... </a> <div class=”b-cut__content b-cut__opener_visibility_visible”> ... </div></div>

Wednesday, October 5, 2011

Page 31: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Контейнер блока

31

<div class=”b-cut”> ...</div>

Wednesday, October 5, 2011

Page 32: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

js: true

32

<div class=”b-cut i-bem” onclick=”return {"b-cut":{}}”> ...</div>

Wednesday, October 5, 2011

Page 33: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Пишем код

33

Wednesday, October 5, 2011

Page 34: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Инициализация

34

<div class=”b-cut i-bem b-cut_js_inited” onclick=”return {"b-cut":{}}”> ...</div>

Wednesday, October 5, 2011

Page 35: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Начальное состояние

35

<a class=”b-link b-link_pseudo_yes b-cut__opener i-bem” onclick=”return {"b-link":{}}”> ...</a>

Wednesday, October 5, 2011

Page 36: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Начальное состояние

36

<a class=”b-link b-link_pseudo_yes b-cut__opener i-bem” onclick=”return {"b-link":{}}”> ...</a>

Wednesday, October 5, 2011

Page 37: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Начальное состояние

37

<a class=”b-link b-link_pseudo_yes b-link_js_inited b-cut__opener i-bem” onclick=”return {"b-link":{}}”> ...</a>

Wednesday, October 5, 2011

Page 38: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Пишем код

38

Wednesday, October 5, 2011

Page 39: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Как закрывать кат?

39

<div class=”b-cut”> ... <div class=”b-cut__content b-cut__opener_visibility_visible”> <i class=”b-cut__close”></i> ... </div></div>

Wednesday, October 5, 2011

Page 40: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Пишем код

40

Wednesday, October 5, 2011

Page 41: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Очередной проект

41

Wednesday, October 5, 2011

Page 42: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Инициализация проекта

42

Клонируем репозиторий

git://github.com/toivonen/yac2011-bem-js-blog.git

make

Получает библиотеку bem-bl

Собирает страницы

Wednesday, October 5, 2011

Page 43: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Пишем код

43

Wednesday, October 5, 2011

Page 44: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

для “почитать”Ссылки

44

Репозиторий библиотекиgithub.com/bem/bem-bl или clck.ru/Kuu4jsdoc в коде блока i-bem

Документация блока i-bemclck.ru/KzEJ

Клуб в Ярушке

Wednesday, October 5, 2011

Page 45: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Bарвара Степанова[email protected]

Wednesday, October 5, 2011

Page 46: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Бонус!

46

Wednesday, October 5, 2011

Page 47: i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс

Пишем код

47

Wednesday, October 5, 2011