Виталий Харисов "БЭМ: от методологии до...

86
Руководитель отдела инфраструктуры разработки интерфейсов БЭМ: от методологии до платформы Виталий Харисов Я.Субботник, Рига, 6 апреля 2013 года Привет! Меня зовут Виталий Харисов, я работаю в Яндексе и занимаюсь созданием внутренней платформы для разработки интерфейсов. Её open source часть называется БЭМ (от слов Блок-Элемент-Модификатор).

Upload: yandex

Post on 16-Jun-2015

1.685 views

Category:

Technology


4 download

DESCRIPTION

Мало кто знает, но Яндекс – это не только Поиск. Уже больше десяти лет мы делаем разные веб-сервисы, такие как Почта, Карты и другие специализированные поиски. Со временем большое количество разных примеров из реальной практики привело нас к тому, что сейчас называется БЭМ-методологией. Доклад о том, на каком этапе развития находится проект сейчас и в какую сторону мы движемся, что такое БЭМ-коммьюнити и как стать его частью.

TRANSCRIPT

Page 1: Виталий Харисов "БЭМ: от методологии до платформы"

Руководитель отделаинфраструктуры разработки интерфейсов

БЭМ:от методологии до платформыВиталий Харисов

Я.Субботник, Рига, 6 апреля 2013 года

Привет!

Меня зовут Виталий Харисов, я работаю в Яндексе и занимаюсь созданием внутренней платформы для разработки интерфейсов.

Её open source часть называется БЭМ (от слов Блок-Элемент-Модификатор).

Page 2: Виталий Харисов "БЭМ: от методологии до платформы"

Обо мне

[email protected]@harisov

— из Симферополя— отвечаю за разработку платформы БЭМ— пришёл в Яндекс в 2005 году как HTML-верстальщик— прошёл путь от вёрстки независимыми блоками до— разработки БЭМ-платформы

2Это наш подход к разработке сайтов, который развивался в Яндексе в течение нескольких лет.

Думаю, что он будет полезен вам, как web-разработчикам.

Прежде чем мы начнём, скажите, кто-то из вас знает, что такое БЭМ? Поднимите руки, пожалуйста.

Page 13: Виталий Харисов "БЭМ: от методологии до платформы"

Процесс разработки

Дизайн Статика

JS

Динамика

PHP

Рвётся связь13

HTMLCSS

PSD

Проблема заключается в том, что программист, делая шаблоны, не расширяет то, что уже сделал верстальщик, а фактически делает работу заново, перенося результат работы верстальщика в свой код.

Он по другому разделяет на функциональные части.

То же самое часто происходит при добавлении JavaScript, когда для скрипта использются отдельные классы.

Page 15: Виталий Харисов "БЭМ: от методологии до платформы"

Процесс разработки

Дизайн Статика

JS

Динамика

PHP

15

HTMLCSS

PSD

Аналогично проблема в том, что верстальщик не продолжает работать с тем, что сделал дизайнер, развивая и обогащая его работу.

Page 17: Виталий Харисов "БЭМ: от методологии до платформы"

Процесс разработки

Дизайн Статика

JS

Динамика

PHP

17

HTMLCSS

PSD

Разные терминыДизайнер называет части макета по своему, верстальщик — по своему.

Они говорят на разных языках, описывая один и тот же интерфейс разными терминами.

Page 21: Виталий Харисов "БЭМ: от методологии до платформы"

21Вавилон.

Page 23: Виталий Харисов "БЭМ: от методологии до платформы"

Процесс разработки

Дизайн Статика

JS

Динамика

PHP

Изменения23

HTMLCSS

PSD

Но если проект живёт и развивается, если в него вносятся постоянные изменения, то эта рассинхронизация между разными специалистами…

Page 29: Виталий Харисов "БЭМ: от методологии до платформы"

Процесс разработки БЭМ

Дизайн

Статика

29При передаче макета верстальщику передаётся не только картинка, но и то, как называются те или иные части интерфейса по мнению дизайнера.

Page 30: Виталий Харисов "БЭМ: от методологии до платформы"

Процесс разработки БЭМ

Дизайн

Статика

Договариваются30Верстальщик берёт систему именования дизайнера или они договариваются об изменении терминов, чтобы полноценно описать интерфейс, который получается после вёрстки.

Page 34: Виталий Харисов "БЭМ: от методологии до платформы"

Процесс разработки БЭМ

ДизайнСтатика

Динамика Документация34

Такой процесс позволяет добавлять специалистов другой специализации, например, документаторов для работы над общим кодом.

Page 35: Виталий Харисов "БЭМ: от методологии до платформы"

Процесс разработки БЭМ

ДизайнСтатика

Динамика ДокументацияДинамика

Статика

35И такой процесс позволяет добавлять специалистов в тех случаях, когда нужно где-то усилить команду.

Page 39: Виталий Харисов "БЭМ: от методологии до платформы"

БЭМ-методология

requestresponse

39

Блок

Визуальный Не визуальный

Так и любая вспомогательная функциональность проекта, не имеющая визуального представления.

Например, как блоки может быть оформлено ajax-взаимодействие.

Page 60: Виталий Харисов "БЭМ: от методологии до платформы"

БЭМ-методология

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

Проект А

Блок А1 Блок А2

Блок А3 Блок А4

Проект Б

Блок Б1 Блок Б2

Блок Б3 Блок Б4

60…могут содержать общие блоки и в этом случае можно выделить…

Page 62: Виталий Харисов "БЭМ: от методологии до платформы"

БЭМ-методология

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

Блок А1Блок 1

Блок А2

Блок А4

Блок Б1

Блок Б3 Блок Б4

Блок 1

Блок 1Библиотекаблоков

Блок 2

62И потом использовать этот общий блок из библиотеки блоков.

Page 63: Виталий Харисов "БЭМ: от методологии до платформы"

БЭМ-методология

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

Блок А1Блок 1

Блок А2

Блок А4

Блок Б1

Блок Б3 Блок Б4

Блок 1

Блок 1Библиотекаблоков

Блок 2

63При этом на проекте можно доопределять этот блок до нужного вида или поведения.

Page 64: Виталий Харисов "БЭМ: от методологии до платформы"

БЭМ-методология

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

Уровень библиотеки

Уровеньпроекта А

Уровеньпроекта Б

64Место, где лежит реализация блока, мы называем уровнем переопределения.

Причём таких уровней как на проекте, так в библиотеке может быть много.

Page 67: Виталий Харисов "БЭМ: от методологии до платформы"

БЭМ-методология

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

desktoptouch

desktop

commondesktop

touch

67И понимаем, что у нас есть общие блоки между десктопной и тачевой реализациями библиотеки.

Выносим их на common уровень.

Page 71: Виталий Харисов "БЭМ: от методологии до платформы"

БЭМ-методология

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

commondesktop

touch

commondesktop

touch

desktop

1 2

3 4

71При этом финальная реализация блока собирается с разных уровней в указанном порядке.

Каждый последующий уровень или доопределяет блоки с предыдущего, или привносит свои.

Это как слои в Фотошопе. Вы можете положить слой который всё притуманит, а можете положить слой на котором будет нарисован дополнительный объект.

Page 75: Виталий Харисов "БЭМ: от методологии до платформы"

M RE

БЭМ-платформа

BEMRuntime environment

• i-bem.js• bemhtml• server libs

75Среда исполнения.

Это набор технологий, облегчающих написание кода и хорошо работающих вместе.

Про это будет рассказывать Серегей Бережной.

Page 78: Виталий Харисов "БЭМ: от методологии до платформы"

БЭМ-платформа

M REDE

TE blocks

BEM

bem-corebem-page

bem-controlsbem-media …

pageheaderfooter

inputbuttoncheckbox

textvideoflash

bemjquery

Библиотеки блоков

78И библиотеки блоков.

Это аналог Twitter Bootstrap, готовые к использованию блоки. В отличие от Бутстрапа, разработчик сайта может легко использовать свой дизайн вместо стандартного.

Мы будем выносить блоки из своей внутренней библиотеки в Open Source, первый релиз запланирован на лето.