bem-components — от методологии до full stack платформы

66

description

Мало кто знает, но Яндекс – это не только Поиск. Больше десяти лет Яндекс делает разные интернет-сервисы: Карты, Почту, Директ, Музыку, Авто и так далее. В процессе их разработки был приобретён опыт, который мог быть полезен другим веб-разработчикам. Большое количество примеров из реальной практики побудило нас 10 лет назад придумать методологию БЭМ. Спустя 5 лет мы поделились ей с вами, вынеся в open source, вместе с инструментами и библиотекой блоков. Сейчас БЭМ — не просто свод правил про CSS и набор инструментов. Это открытая full stack платформа, у которой есть пользователи далеко за пределами Яндекса и СНГ. В докладе мы расскажем про эволюцию БЭМ: от методологии до полноценной платформы. Речь пойдёт об использовании полного стека БЭМ-технологий, о переходе к серверному JavaScript и автоматизации разработки. Мы поделимся нашими библиотеками блоков bem-core и bem-components, которые позволяют быстро собрать качественный интерфейс как из конструктора «Лего». На РИФ-Воронеж Владимир Гриненко и Елена Джетпыспавеа подробно рассказали, зачем БЭМ пошел в опенсорс, как прошел путь от методологии до full stack платформы и чему научились за это время, а также показали наших пользователей в лицо и поделились интересными уроками, которые вынесли, и которые помогут вам в разработке ваших продуктов. Обещаем много интересных подробностей.

Transcript of bem-components — от методологии до full stack платформы

Page 1: bem-components — от методологии до full stack платформы
Page 2: bem-components — от методологии до full stack платформы

2

Page 3: bem-components — от методологии до full stack платформы

bem-components: от методологиидо full stack платформы

Владимир Гриненко, Елена Джетпыспаева

3 октября, РИФ-Воронеж 20143

Page 4: bem-components — от методологии до full stack платформы

О нас— Владимир Гриненко

— руковожу службой разработки БЭМ

[email protected]

— @tadatuta

— github.com/tadatuta

4

Page 5: bem-components — от методологии до full stack платформы

О нас— Мурся

— 3 года в Яндексе

— Я.Субботники, YaC, группа собственных мероприятий…

— маркетинг технологий, коммуникации,

Developer Relations & BEM

[email protected]

— @mursya_ru

5

Page 6: bem-components — от методологии до full stack платформы

Содержание— История БЭМ: от методологии до платформы

— bem-components — готовая библиотека для ваших проектов

— Сообщество БЭМ

— Пользователям и контрибьюторам

6

Page 7: bem-components — от методологии до full stack платформы

БЭМ — о чем это вообще— БЭМ — это разделение интерфейсы на блоки

— ООП в полный рост

— Единая предметная область

7

Page 8: bem-components — от методологии до full stack платформы

БЭМ позволяет— инкапсулировать реализацию блока

8

Page 9: bem-components — от методологии до full stack платформы

НеймингБлок__Элемент_Модификатор

9

Page 10: bem-components — от методологии до full stack платформы

БЭМ позволяет— инкапсулировать реализацию блока

— наследовать блоки друг от друга

10

Page 11: bem-components — от методологии до full stack платформы

БЭМ позволяет— инкапсулировать реализацию блока

— наследовать блоки друг от друга

— полиморфизм в терминах модификаторов

11

Page 12: bem-components — от методологии до full stack платформы
Page 13: bem-components — от методологии до full stack платформы
Page 14: bem-components — от методологии до full stack платформы

3 источника, 3 составные части— Методология

— Инструменты

— Библиотеки готовых блоков

14

Page 15: bem-components — от методологии до full stack платформы

Преимущества— Уменьшение сложности кода

— Упрощение коммуникации

— Реиспользование кода

— Ускорение разработки

15

Page 16: bem-components — от методологии до full stack платформы

Как меняется процесс разработки

16

Page 17: bem-components — от методологии до full stack платформы

Отличия БЭМ— Абстракция над DOM — мыслим в терминах блоков

17

Page 18: bem-components — от методологии до full stack платформы

BEMJSON{

block: 'button',

mods: { theme: 'promo' },

content: 'Разместить рекламу'

}

18

Page 19: bem-components — от методологии до full stack платформы

Отличия БЭМ— Абстракция над DOM — мыслим в терминах блоков

— Разделение на блоки отражено и на файловой системе

19

Page 20: bem-components — от методологии до full stack платформы

Файловая системаprj/

blocks/

header/

header.css

header.js

header.tmpl

header.svg

header.md 20

Page 21: bem-components — от методологии до full stack платформы

Файловая системаprj/

blocks/

header/

_theme/

header_theme_simple.css

header_theme_full.css

__logo/

header__logo.css 21

Page 22: bem-components — от методологии до full stack платформы

Отличия БЭМ— Абстракция над DOM — мыслим в терминах блоков

— Разделение на блоки отражено и на файловой системе

— Декларативность во всем

22

Page 23: bem-components — от методологии до full stack платформы

BEMHTML block button {

tag: 'input'

attrs: { type: 'button'}

}

23

Page 24: bem-components — от методологии до full stack платформы

История БЭМ

24

Page 25: bem-components — от методологии до full stack платформы

История— в Яндексе

— под названием АНБ

— Виталя Харисов и Серега veged Бережной

— bem-bl и bem-tools

— bem-core и bem-components

— c 2006 и по сей день

25

Page 26: bem-components — от методологии до full stack платформы

bem-components

26

Page 27: bem-components — от методологии до full stack платформы

bem-components — готовая библиотекадля ваших проектов

— Компонентный веб — будущее уже наступило!

— 20 блоков и это не предел

— Тестируем все и вся

— OpenSourced, scaled, delivered — it's yours!

27

Page 28: bem-components — от методологии до full stack платформы

bem-components / состав— link

— button

— input

— attach

— checkbox-group

— radio-group

— menu

— popup

— dropdown

— icon

— image

— spin

— select

— в активной разработке modal

28

Page 29: bem-components — от методологии до full stack платформы
Page 30: bem-components — от методологии до full stack платформы

bem-components / в тренде— компонентный подход

— CSS-препроцессор

— автопрефиксер

30

Page 31: bem-components — от методологии до full stack платформы

bem-components / обгоняя тренды— в браузерах еще вчера

— уровни переопределения

— сборка

— декларативность

— дизайн опционально

31

Page 32: bem-components — от методологии до full stack платформы

bem-components / тестирование— ручное

— unit-тесты для JS

— тесты на шаблоны

— тесты на верстку (gemini)

— проверка кодстайла

— CI

32

Page 33: bem-components — от методологии до full stack платформы

Как быстро начать разрабатывать на БЭМ

33

Page 34: bem-components — от методологии до full stack платформы

Quick start— bem.info

— git clone https://github.com/bem/project-stub.git

— npm i

— ./node_modules/.bin/bem server

34

Page 35: bem-components — от методологии до full stack платформы
Page 36: bem-components — от методологии до full stack платформы

Сообщество БЭМ

36

Page 37: bem-components — от методологии до full stack платформы
Page 38: bem-components — от методологии до full stack платформы

«Когда я спросил Харисова на Я.Субботнике в

2009 (я тогда в Яндексе не работал), почему они

бесплатно рассказывают и выкладывают

наработки, он ответил: „Когда делаешь что-то

долго и хорошо, со временем появляется желание

поделиться“»,

— из разговора с одним неизвестным

БЭМ-разработчиком

38

Page 39: bem-components — от методологии до full stack платформы
Page 40: bem-components — от методологии до full stack платформы
Page 41: bem-components — от методологии до full stack платформы

Ведь приходилось делать— БЭМ — методологию и технологии

— Лего — общепортальную мета-библиотеку блоков Яндекса

— разбираться с багами сервисов (Поиска, Картинок, Видео и т.д.)

— отвечать на запросы

— эвангелизировать

— иногда чуть-чуть жить

41

Page 42: bem-components — от методологии до full stack платформы

Не только методология, но и— библиотеки

— инструменты

— JS-фреймворк

— шаблонизатор

— движок для сбора документации и примеров

— тесты для блоков

— много чего еще

42

Page 43: bem-components — от методологии до full stack платформы
Page 44: bem-components — от методологии до full stack платформы
Page 45: bem-components — от методологии до full stack платформы

БЭМ — первый технологический продуктЯндекса

45

Page 46: bem-components — от методологии до full stack платформы

Кто мы— Служба разработки БЭМ

— Лего и разработчики сервисов Яндекса

— Разработчики, использующие БЭМ

46

Page 47: bem-components — от методологии до full stack платформы

Что мы делаем— Служба разработки БЭМ — продукт

— Команда Лего — мета-библиотеку Яндекса на этом продукте

— Разработчики сервисов — сервисы на Лего или БЭМ и часто свои

БЭМ-проекты

— Разработчики, использующие БЭМ — проекты на БЭМ, свои БЭМ-

инструменты, библиотеки и даже целые новые методологии :)

47

Page 48: bem-components — от методологии до full stack платформы
Page 49: bem-components — от методологии до full stack платформы
Page 50: bem-components — от методологии до full stack платформы
Page 51: bem-components — от методологии до full stack платформы
Page 52: bem-components — от методологии до full stack платформы
Page 53: bem-components — от методологии до full stack платформы

Пользователям и контрибьюторам

53

Page 54: bem-components — от методологии до full stack платформы

Арсенал— Продукт — библиотека bem-components: 20 блоков, тесты,

документация, демо (coming), пыщ-пыщ!

— Служба разработки продукта — разработчики, тестировщики,

документаторы

— Проекты и пользователи разного уровня сложности, размера, тп

— Онлайн-площадка — bem.info

54

Page 55: bem-components — от методологии до full stack платформы
Page 56: bem-components — от методологии до full stack платформы
Page 57: bem-components — от методологии до full stack платформы
Page 58: bem-components — от методологии до full stack платформы
Page 59: bem-components — от методологии до full stack платформы
Page 60: bem-components — от методологии до full stack платформы
Page 61: bem-components — от методологии до full stack платформы
Page 62: bem-components — от методологии до full stack платформы

Арсенал— Продукт — библиотека bem-components: 20 блоков, тесты,

документация, демо (coming), пыщ-пыщ!

— Служба разработки продукта — разработчики, тестировщики,

документаторы

— Проекты и пользователи разного уровня сложности, размера, тп

— Онлайн-площадка — bem.info

— Оффлайн-площадка: BEMup-ы, хакатоны, конференции и семинары

— Мурся, маркетинг, коммьюнити 62

Page 63: bem-components — от методологии до full stack платформы
Page 64: bem-components — от методологии до full stack платформы

Пользователям и контрибьюторам— Помогаем консультациями

— Реагируем на фидбек

— Отвечаем на фичреквесты

— Продвигаем вместе

64

Page 65: bem-components — от методологии до full stack платформы
Page 66: bem-components — от методологии до full stack платформы

БЭМБлок__Элемент_Модификатор

ru.bem.info

ru.bem.info/forum

[email protected]

@bem_ru #b_ Спасибо!

66