SlideShare a Scribd company logo
1 of 47
Download to read offline
JavaScript в БЭМ-терминах
                   Варвара Степанова




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



Wednesday, October 5, 2011
clck.ru/L45C
                                шпаргалка к мастер-классу
                             JavaScript в терминах БЭМ




Wednesday, October 5, 2011
Блоки и элементы




                   3

Wednesday, October 5, 2011
Модификаторы




                   4

Wednesday, October 5, 2011
Уровни переопределения




                   5

Wednesday, October 5, 2011
Составные блоки




                   6

Wednesday, October 5, 2011
JS-реализация блока i-bem




                   7

Wednesday, October 5, 2011
Features
                   Некоторые особенности




                   8

Wednesday, October 5, 2011
Features
                   Некоторые особенности

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




                   9

Wednesday, October 5, 2011
Features
                   Некоторые особенности

                    Декларативный стиль
                    Отложенная инициализация




                   10

Wednesday, October 5, 2011
Features
                   Некоторые особенности

                    Декларативный стиль
                    Отложенная инициализация
                    Использование вложенных блоков




                   11

Wednesday, October 5, 2011
Features
                   Некоторые особенности

                    Декларативный стиль
                    Отложенная инициализация
                    Использование вложенных блоков
                    Реакция на изменение модификаторов




                   12

Wednesday, October 5, 2011
Features
                   Некоторые особенности

                    Декларативный стиль
                    Отложенная инициализация
                    Использование вложенных блоков
                    Реакция на изменение модификаторов
                    Расширение поведения модификаторами и уровнями
                    переопределения

                   13

Wednesday, October 5, 2011
Что будем делать?




                   14

Wednesday, October 5, 2011
Блок-cut
                   b-cut




                   15

Wednesday, October 5, 2011
Блок-cut
                   b-cut




                   16

Wednesday, October 5, 2011
Инструменты и окружение




                   17

Wednesday, October 5, 2011
Инструменты и окружение

                    Локальный web-сервер
                    БЭМ-инструменты
                             github.com/bem/bem-tools
                             или clck.ru/Kz8v




                   18

Wednesday, October 5, 2011
Инициализация проекта




                   19

Wednesday, October 5, 2011
Инициализация проекта

                   Клонируем репозиторий
                             git://github.com/toivonen/yac2011-bem-js-docs.git
                   make
                             Получает библиотеку bem-bl
                             Собирает страницы


                   20

Wednesday, October 5, 2011
Структура проекта

                    bem-bl/
                    blocks/
                    pages/
                    GNUmakefile




                   21

Wednesday, October 5, 2011
Структура проекта

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




                   22

Wednesday, October 5, 2011
Структура проекта

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



                   23

Wednesday, October 5, 2011
Структура проекта

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




                   24

Wednesday, October 5, 2011
Структура проекта

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




                   25

Wednesday, October 5, 2011
Структура проекта

                    bem-bl/
                    blocks/
                    pages/
                    GNUmakefile




                   26

Wednesday, October 5, 2011
Пишем код




                   27

Wednesday, October 5, 2011
Основные элементы блока



                      <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>



                   28

Wednesday, October 5, 2011
Начальное состояние



                      <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>



                   29

Wednesday, October 5, 2011
Открытый кат



                      <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>




                   30

Wednesday, October 5, 2011
Контейнер блока



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




                   31

Wednesday, October 5, 2011
js: true



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




                   32

Wednesday, October 5, 2011
Пишем код




                   33

Wednesday, October 5, 2011
Инициализация



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




                   34

Wednesday, October 5, 2011
Начальное состояние



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




                   35

Wednesday, October 5, 2011
Начальное состояние



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




                   36

Wednesday, October 5, 2011
Начальное состояние



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




                   37

Wednesday, October 5, 2011
Пишем код




                   38

Wednesday, October 5, 2011
Как закрывать кат?



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




                   39

Wednesday, October 5, 2011
Пишем код




                   40

Wednesday, October 5, 2011
Очередной проект




                   41

Wednesday, October 5, 2011
Инициализация проекта

                    Клонируем репозиторий
                             git://github.com/toivonen/yac2011-bem-js-blog.git
                    make
                             Получает библиотеку bem-bl
                             Собирает страницы


                   42

Wednesday, October 5, 2011
Пишем код




                   43

Wednesday, October 5, 2011
Ссылки
                   для “почитать”

                    Репозиторий библиотеки
                       github.com/bem/bem-bl или clck.ru/Kuu4
                       jsdoc в коде блока i-bem
                    Документация блока i-bem
                       clck.ru/KzEJ
                    Клуб в Ярушке

                   44

Wednesday, October 5, 2011
Bарвара Степанова
                             toivonen@yandex-team.ru




Wednesday, October 5, 2011
Бонус!




                   46

Wednesday, October 5, 2011
Пишем код




                   47

Wednesday, October 5, 2011

More Related Content

Viewers also liked

on Air - Творческий фотолагерь
on Air - Творческий фотолагерьon Air - Творческий фотолагерь
on Air - Творческий фотолагерьAlexey Tkachev
 
Inquiry projectambernickelhouslet
Inquiry projectambernickelhousletInquiry projectambernickelhouslet
Inquiry projectambernickelhousletmrs_houslet
 
Pdhpe powerpoint
Pdhpe powerpointPdhpe powerpoint
Pdhpe powerpointmelisa_d
 
Jak zamontowac-oswietlenie-instrukacja-szczegolowa
Jak zamontowac-oswietlenie-instrukacja-szczegolowaJak zamontowac-oswietlenie-instrukacja-szczegolowa
Jak zamontowac-oswietlenie-instrukacja-szczegolowaskleporac
 
Foss in-e gov-august-2014
Foss in-e gov-august-2014Foss in-e gov-august-2014
Foss in-e gov-august-2014nghia le trung
 
DTC Lab Kickoff: Data Viz Content Mashup Agnes Chang (NY Times R&D Lab) Talk
DTC Lab Kickoff: Data Viz Content Mashup Agnes Chang (NY Times R&D Lab) Talk DTC Lab Kickoff: Data Viz Content Mashup Agnes Chang (NY Times R&D Lab) Talk
DTC Lab Kickoff: Data Viz Content Mashup Agnes Chang (NY Times R&D Lab) Talk DTC Lab
 
A2 examen et corrige edu isl 2010 1-am t2
A2 examen et corrige edu isl 2010 1-am t2A2 examen et corrige edu isl 2010 1-am t2
A2 examen et corrige edu isl 2010 1-am t2Ahmed Mesellem
 

Viewers also liked (11)

on Air - Творческий фотолагерь
on Air - Творческий фотолагерьon Air - Творческий фотолагерь
on Air - Творческий фотолагерь
 
Where creativity comes to life
Where creativity comes to lifeWhere creativity comes to life
Where creativity comes to life
 
Inquiry projectambernickelhouslet
Inquiry projectambernickelhousletInquiry projectambernickelhouslet
Inquiry projectambernickelhouslet
 
Support Anna
Support AnnaSupport Anna
Support Anna
 
Modular development
Modular developmentModular development
Modular development
 
Pdhpe powerpoint
Pdhpe powerpointPdhpe powerpoint
Pdhpe powerpoint
 
Jak zamontowac-oswietlenie-instrukacja-szczegolowa
Jak zamontowac-oswietlenie-instrukacja-szczegolowaJak zamontowac-oswietlenie-instrukacja-szczegolowa
Jak zamontowac-oswietlenie-instrukacja-szczegolowa
 
Metode pemisahan standar
Metode pemisahan standarMetode pemisahan standar
Metode pemisahan standar
 
Foss in-e gov-august-2014
Foss in-e gov-august-2014Foss in-e gov-august-2014
Foss in-e gov-august-2014
 
DTC Lab Kickoff: Data Viz Content Mashup Agnes Chang (NY Times R&D Lab) Talk
DTC Lab Kickoff: Data Viz Content Mashup Agnes Chang (NY Times R&D Lab) Talk DTC Lab Kickoff: Data Viz Content Mashup Agnes Chang (NY Times R&D Lab) Talk
DTC Lab Kickoff: Data Viz Content Mashup Agnes Chang (NY Times R&D Lab) Talk
 
A2 examen et corrige edu isl 2010 1-am t2
A2 examen et corrige edu isl 2010 1-am t2A2 examen et corrige edu isl 2010 1-am t2
A2 examen et corrige edu isl 2010 1-am t2
 

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

Использование библиотеки bem-bl
Использование библиотеки bem-blИспользование библиотеки bem-bl
Использование библиотеки bem-blVarya Stepanova
 
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...yaevents
 
Пишем БЭМ правильно
Пишем БЭМ правильноПишем БЭМ правильно
Пишем БЭМ правильноIhor Zenich
 
Elena Gluhova
Elena GluhovaElena Gluhova
Elena Gluhovayaevents
 
Елена Глухова "Верстка кастомными тегами для API Яндекс.Карт"
Елена Глухова "Верстка кастомными тегами для API Яндекс.Карт"Елена Глухова "Верстка кастомными тегами для API Яндекс.Карт"
Елена Глухова "Верстка кастомными тегами для API Яндекс.Карт"Yandex
 
Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний
Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компанийАлександр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний
Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компанийYandex
 

Similar to JavaScript в БЭМ терминах (7)

Использование библиотеки bem-bl
Использование библиотеки bem-blИспользование библиотеки bem-bl
Использование библиотеки bem-bl
 
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
 
Пишем БЭМ правильно
Пишем БЭМ правильноПишем БЭМ правильно
Пишем БЭМ правильно
 
Developer Days 2011, Kharkov
Developer Days 2011, KharkovDeveloper Days 2011, Kharkov
Developer Days 2011, Kharkov
 
Elena Gluhova
Elena GluhovaElena Gluhova
Elena Gluhova
 
Елена Глухова "Верстка кастомными тегами для API Яндекс.Карт"
Елена Глухова "Верстка кастомными тегами для API Яндекс.Карт"Елена Глухова "Верстка кастомными тегами для API Яндекс.Карт"
Елена Глухова "Верстка кастомными тегами для API Яндекс.Карт"
 
Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний
Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компанийАлександр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний
Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний
 

More from Varya Stepanova

Design systems on the web
Design systems on the webDesign systems on the web
Design systems on the webVarya Stepanova
 
SC5 Style Guide Generator
SC5 Style Guide GeneratorSC5 Style Guide Generator
SC5 Style Guide GeneratorVarya Stepanova
 
BEM it! Introduction to BEM
BEM it! Introduction to BEMBEM it! Introduction to BEM
BEM it! Introduction to BEMVarya Stepanova
 
BEM it! Introduction to BEM methodology
BEM it! Introduction to BEM methodologyBEM it! Introduction to BEM methodology
BEM it! Introduction to BEM methodologyVarya Stepanova
 
Maintainable Frontend Development with BEM
Maintainable Frontend Development with BEMMaintainable Frontend Development with BEM
Maintainable Frontend Development with BEMVarya Stepanova
 
BEM. What you can borrow from Yandex frontend dev
BEM. What you can borrow from Yandex frontend devBEM. What you can borrow from Yandex frontend dev
BEM. What you can borrow from Yandex frontend devVarya Stepanova
 
Тема для WordPress в БЭМ
Тема для WordPress в БЭМТема для WordPress в БЭМ
Тема для WordPress в БЭМVarya Stepanova
 
Шаблонизатор BEMHTML
Шаблонизатор BEMHTMLШаблонизатор BEMHTML
Шаблонизатор BEMHTMLVarya Stepanova
 
Использование библиотеки bem-bl
Использование библиотеки bem-blИспользование библиотеки bem-bl
Использование библиотеки bem-blVarya Stepanova
 

More from Varya Stepanova (10)

Design systems on the web
Design systems on the webDesign systems on the web
Design systems on the web
 
SC5 Style Guide Generator
SC5 Style Guide GeneratorSC5 Style Guide Generator
SC5 Style Guide Generator
 
BEM it! Introduction to BEM
BEM it! Introduction to BEMBEM it! Introduction to BEM
BEM it! Introduction to BEM
 
BEM it! Introduction to BEM methodology
BEM it! Introduction to BEM methodologyBEM it! Introduction to BEM methodology
BEM it! Introduction to BEM methodology
 
The Thinking behind BEM
The Thinking behind BEMThe Thinking behind BEM
The Thinking behind BEM
 
Maintainable Frontend Development with BEM
Maintainable Frontend Development with BEMMaintainable Frontend Development with BEM
Maintainable Frontend Development with BEM
 
BEM. What you can borrow from Yandex frontend dev
BEM. What you can borrow from Yandex frontend devBEM. What you can borrow from Yandex frontend dev
BEM. What you can borrow from Yandex frontend dev
 
Тема для WordPress в БЭМ
Тема для WordPress в БЭМТема для WordPress в БЭМ
Тема для WordPress в БЭМ
 
Шаблонизатор BEMHTML
Шаблонизатор BEMHTMLШаблонизатор BEMHTML
Шаблонизатор BEMHTML
 
Использование библиотеки bem-bl
Использование библиотеки bem-blИспользование библиотеки bem-bl
Использование библиотеки bem-bl
 

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

  • 1. JavaScript в БЭМ-терминах Варвара Степанова YAC-2011, Москва, 19 сентября 2011 года Wednesday, October 5, 2011
  • 2. clck.ru/L45C шпаргалка к мастер-классу JavaScript в терминах БЭМ Wednesday, October 5, 2011
  • 3. Блоки и элементы 3 Wednesday, October 5, 2011
  • 4. Модификаторы 4 Wednesday, October 5, 2011
  • 5. Уровни переопределения 5 Wednesday, October 5, 2011
  • 6. Составные блоки 6 Wednesday, October 5, 2011
  • 7. JS-реализация блока i-bem 7 Wednesday, October 5, 2011
  • 8. Features Некоторые особенности 8 Wednesday, October 5, 2011
  • 9. Features Некоторые особенности Декларативный стиль 9 Wednesday, October 5, 2011
  • 10. Features Некоторые особенности Декларативный стиль Отложенная инициализация 10 Wednesday, October 5, 2011
  • 11. Features Некоторые особенности Декларативный стиль Отложенная инициализация Использование вложенных блоков 11 Wednesday, October 5, 2011
  • 12. Features Некоторые особенности Декларативный стиль Отложенная инициализация Использование вложенных блоков Реакция на изменение модификаторов 12 Wednesday, October 5, 2011
  • 13. Features Некоторые особенности Декларативный стиль Отложенная инициализация Использование вложенных блоков Реакция на изменение модификаторов Расширение поведения модификаторами и уровнями переопределения 13 Wednesday, October 5, 2011
  • 14. Что будем делать? 14 Wednesday, October 5, 2011
  • 15. Блок-cut b-cut 15 Wednesday, October 5, 2011
  • 16. Блок-cut b-cut 16 Wednesday, October 5, 2011
  • 17. Инструменты и окружение 17 Wednesday, October 5, 2011
  • 18. Инструменты и окружение Локальный web-сервер БЭМ-инструменты github.com/bem/bem-tools или clck.ru/Kz8v 18 Wednesday, October 5, 2011
  • 19. Инициализация проекта 19 Wednesday, October 5, 2011
  • 20. Инициализация проекта Клонируем репозиторий git://github.com/toivonen/yac2011-bem-js-docs.git make Получает библиотеку bem-bl Собирает страницы 20 Wednesday, October 5, 2011
  • 21. Структура проекта bem-bl/ blocks/ pages/ GNUmakefile 21 Wednesday, October 5, 2011
  • 22. Структура проекта bem-bl/ blocks-common/ blocks-desktop/ blocks/ pages/ GNUmakefile 22 Wednesday, October 5, 2011
  • 23. Структура проекта bem-bl/ blocks-common/ i-bem/ ... blocks-desktop/ blocks/ pages/ GNUmakefile 23 Wednesday, October 5, 2011
  • 24. Структура проекта bem-bl/ blocks/ b-cut/ ... pages/ GNUmakefile 24 Wednesday, October 5, 2011
  • 25. Структура проекта bem-bl/ blocks/ pages/ index/ index.bemjson.js ... GNUmakefile 25 Wednesday, October 5, 2011
  • 26. Структура проекта bem-bl/ blocks/ pages/ GNUmakefile 26 Wednesday, October 5, 2011
  • 27. Пишем код 27 Wednesday, October 5, 2011
  • 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> 28 Wednesday, October 5, 2011
  • 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> 29 Wednesday, October 5, 2011
  • 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> 30 Wednesday, October 5, 2011
  • 31. Контейнер блока <div class=”b-cut”> ... </div> 31 Wednesday, October 5, 2011
  • 32. js: true <div class=”b-cut i-bem” onclick=”return {"b-cut":{}}”> ... </div> 32 Wednesday, October 5, 2011
  • 33. Пишем код 33 Wednesday, October 5, 2011
  • 34. Инициализация <div class=”b-cut i-bem b-cut_js_inited” onclick=”return {"b-cut":{}}”> ... </div> 34 Wednesday, October 5, 2011
  • 35. Начальное состояние <a class=”b-link b-link_pseudo_yes b-cut__opener i-bem” onclick=”return {"b-link":{}}”> ... </a> 35 Wednesday, October 5, 2011
  • 36. Начальное состояние <a class=”b-link b-link_pseudo_yes b-cut__opener i-bem” onclick=”return {"b-link":{}}”> ... </a> 36 Wednesday, October 5, 2011
  • 37. Начальное состояние <a class=”b-link b-link_pseudo_yes b-link_js_inited b- cut__opener i-bem” onclick=”return {"b-link":{}}”> ... </a> 37 Wednesday, October 5, 2011
  • 38. Пишем код 38 Wednesday, October 5, 2011
  • 39. Как закрывать кат? <div class=”b-cut”> ... <div class=”b-cut__content b-cut__opener_visibility_visible”> <i class=”b-cut__close”></i> ... </div> </div> 39 Wednesday, October 5, 2011
  • 40. Пишем код 40 Wednesday, October 5, 2011
  • 41. Очередной проект 41 Wednesday, October 5, 2011
  • 42. Инициализация проекта Клонируем репозиторий git://github.com/toivonen/yac2011-bem-js-blog.git make Получает библиотеку bem-bl Собирает страницы 42 Wednesday, October 5, 2011
  • 43. Пишем код 43 Wednesday, October 5, 2011
  • 44. Ссылки для “почитать” Репозиторий библиотеки github.com/bem/bem-bl или clck.ru/Kuu4 jsdoc в коде блока i-bem Документация блока i-bem clck.ru/KzEJ Клуб в Ярушке 44 Wednesday, October 5, 2011
  • 45. Bарвара Степанова toivonen@yandex-team.ru Wednesday, October 5, 2011
  • 46. Бонус! 46 Wednesday, October 5, 2011
  • 47. Пишем код 47 Wednesday, October 5, 2011