100
Руководитель разработки на Украине Я.Субботник, Москва, 8 cентября 2012 года Настоящее и будущее БЭМ Виталий Харисов Здравствуйте, меня зовут Виталий Харисов. Сегодня я хочу дать вам обзор существующих частей БЭМ, рассказать что у нас есть сейчас. Поговорить о наших планах на будущее и чем нам можно помочь в разработке БЭМ.

Виталий Харисов "Настоящее и будущее БЭМ"

  • Upload
    yandex

  • View
    1.545

  • Download
    3

Embed Size (px)

DESCRIPTION

Полный обзор существующих частей БЭМ-экосистемы. Рассказ о том, что у нас есть сейчас, в какой оно степени готовности, в чём нам можно помочь в разработке БЭМ, а также о наших желаниях на будущее.

Citation preview

Page 1: Виталий Харисов "Настоящее и будущее БЭМ"

Руководитель разработки на Украине

Я.Субботник, Москва, 8 cентября 2012 года

Настоящее и будущее БЭМ

Виталий Харисов

Здравствуйте, меня зовут Виталий Харисов.

Сегодня я хочу дать вам обзор существующих частей БЭМ, рассказать что у нас есть сейчас.

Поговорить о наших планах на будущее и чем нам можно помочь в разработке БЭМ.

Page 5: Виталий Харисов "Настоящее и будущее БЭМ"

Методология

5

— Порядок в коде

— Упрощение работы в команде

Так же они упрощают командную работу — каждый игрок в команде не пишет код по своим правилам, а делает это согласовано с другими членами команды.

Page 10: Виталий Харисов "Настоящее и будущее БЭМ"

tutorials/ prerequisites.wiki hello-world.wiki second-page.wiki

Технологии: ДокументацияМетодология

10

Это нас приводит к тому, что документация к проекту тоже может быть выражена в терминах БЭМ и работать с ней можно точно так же, как с кодом проекта.

Здесь каждый файл это отдельный блок с одной технологией .wiki

Page 12: Виталий Харисов "Настоящее и будущее БЭМ"

blocks/ .bem/ level.js head/ foot/ …

Уровни переопределенияМетодология

12

Каждый уровень переопределения может иметь свою настройку схемы именования БЭМ-сущностей и настройку технологий, которые используются при создании блоков.

Page 18: Виталий Харисов "Настоящее и будущее БЭМ"

blocks-common/

blocks-desktop/

pages-desktop/index/

Наборы уровней переопределенияМетодология

18

Уровни переопределения собираются в наборы, которые задают порядок, в котором собирается финальная реализация блока.

Page 37: Виталий Харисов "Настоящее и будущее БЭМ"

bem-toolsИнструменты

37

— создавать

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

— блоки

— элементы

— модификаторы

…создавать уровни переопределения, блоки, элементы, модификаторы; …

Page 39: Виталий Харисов "Настоящее и будущее БЭМ"

bem-toolsИнструменты

39

— работать с технологиями

— технологии по умолчанию

На уровне переопределения можно задать технологии по умолчанию, использующиеся при создании сущностей на этом уровне.

Page 40: Виталий Харисов "Настоящее и будущее БЭМ"

bem-toolsИнструменты

40

— работать с технологиями

— технологии по умолчанию

— шаблоны технологий

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

Page 41: Виталий Харисов "Настоящее и будущее БЭМ"

bem-toolsИнструменты

41

— работать с технологиями

— технологии по умолчанию

— шаблоны технологий

— добавлять к имеющимся

Можно добавлять технологии к уже имеющимся сущностям.

Page 44: Виталий Харисов "Настоящее и будущее БЭМ"

bem-toolsИнструменты

44

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

— при создании

— при сборке

…при сборке указывается набор уровней, которые надо использовать.

Page 49: Виталий Харисов "Настоящее и будущее БЭМ"

Работа с файламиИнструменты

49

— borschikgithub.com/veged/borschik

— setochkagithub.com/afelix/setochka

Инструменты для работы с файлами:

* Расширяемый сборщик текстовых файлов. Может использоваться для сборки CSS, JS и других файлов.

* Сеточка позволяет выделить CSS-свойств исходного CSS в отдельные файлы. Может использоваться для разбиения CSS-файла на несколько с вендорными префиксами.

Page 51: Виталий Харисов "Настоящее и будущее БЭМ"

Парсеры / языкиИнструменты

51

— OmetaJSgithub.com/veged/ometa-js

— smakowikigithub.com/veged/shmakowiki

— gonzales (в разработке)github.com/afelix/gonzales

Мы разрабатываем парсеры для языков и сами языки:

* OmetaJS — объектно-ориентированный язык для построения парсеров * shmakowiki — диалект wiki, используем для своей документации * gonzales — быстрый парсер CSS (в разработке)

Page 53: Виталий Харисов "Настоящее и будущее БЭМ"

ЯдроБиблиотека блоков bem-bl

53

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

Первая часть это ядро, оно реализует технологии для облегчения работы с блоками.

Это шаблонизатор bemhtml, про который будет подробно рассказывать Вегед.

Page 54: Виталий Харисов "Настоящее и будущее БЭМ"

ЯдроБиблиотека блоков bem-bl

54

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

— фреймворк клиентского JavaScript

И фреймворк для написания клиентского JavaScript, про который будет отдельная секция докладов от Вовы, Вари и Саши.

Page 55: Виталий Харисов "Настоящее и будущее БЭМ"

ЯдроБиблиотека блоков bem-bl

55

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

— фреймворк клиентского JavaScript

— ядро — это блок!

ВАЖНО: Ядро это тоже блок и мы не навязываем его использование.

Page 56: Виталий Харисов "Настоящее и будущее БЭМ"

ЯдроБиблиотека блоков bem-bl

56

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

— фреймворк клиентского JavaScript

— ядро — это блок!

— можно заменить на свой блок

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

Page 57: Виталий Харисов "Настоящее и будущее БЭМ"

Блоки для сайтовБиблиотека блоков bem-bl

57

— блоков мало

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

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

Мы понимаем, что это не полноценный набор блоков для построения сайта.

Этот набор можно рассматривать как демонстрационный, на этом примере можно понять, как делать свои блоки.

Page 58: Виталий Харисов "Настоящее и будущее БЭМ"

Варианты использования БЭМ

58

Хочу обратить внимание, что БЭМ не имеет единственно правильного варианта использования и не стремится его получить.

Наоборот, мы рассматриваем БЭМ как набор правил, который каждая конкретная команда встраивает в свой процесс разработки и использует так, как удобно.

Давайте посмотрим на примерах.

Page 61: Виталий Харисов "Настоящее и будущее БЭМ"

myfacebook/ styles.css scripts.js index.html

И верстаетеБлоки в одном файле

61

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

При использовании этого варианта всё делается руками, без bem-tools.

Page 65: Виталий Харисов "Настоящее и будущее БЭМ"

blocks/ b-myblock/ b-myblock_mod_val1.css b-myblock__opt-elem.css b-myblock__opt-elem_mod_val1.css b-myblock.css

Не обязательное в файлах

65

…можно вынести их реализацию в отдельные файлы, чтобы подключать только то, что нужно.

Page 67: Виталий Харисов "Настоящее и будущее БЭМ"

blocks/ b-myblock/ _mod/ b-myblock_mod_val1.css b-myblock__opt-elem.css b-myblock__opt-elem_mod_val1.css b-myblock.css

Модификаторы в директориях

67

…для каждого можно сделать отдельную директорию. Это разгрузит корневую директорию блока.

Page 68: Виталий Харисов "Настоящее и будущее БЭМ"

Элементы/модификаторыв директориях

68

Самый сложный в разработке, но самый понятный вариант по конечной структуре, когда ВСЕ элементы блока и ВСЕ модификаторы имеют свои директории.

Page 69: Виталий Харисов "Настоящее и будущее БЭМ"

blocks/ b-myblock/ _mod/ b-myblock_mod_val1.css __elem/ b-myblock__elem.css b-myblock.css

Элементы/модификаторыв директориях

69

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

Можно упростить его, вынося в директории только необязательные элементы, а код обязательных элементов класть в основной файл блока.

Page 70: Виталий Харисов "Настоящее и будущее БЭМ"

Будущее

70

Итак, это то, что у нас есть уже сейчас.

Дальше я расскажу о наших планах на ближайшие полгода/год и в чём нам можно помочь, ибо планов гораздо больше, чем мы успеваем сделать.

Page 74: Виталий Харисов "Настоящее и будущее БЭМ"

Полный стек

74

— сложные системы

— методология для всех частей системы

— инструменты для всех частей системы

Эти правила должны быть подкреплены инструментами.

Page 75: Виталий Харисов "Настоящее и будущее БЭМ"

Полный стек

75

— сложные системы

— методология для всех частей системы

— инструменты для всех частей системы

— много работы по документации

У нас практически уже всё есть для этого, предстоит большая работа по документированию и доведению до состояния, когда внешние люди могут использовать весь стек технологий для своей разработки.

Page 78: Виталий Харисов "Настоящее и будущее БЭМ"

Сайт bem.info

78

— вся информация на одном сайте

— английский / русский

Сайт будет на двух языках, русском и английском, с возможностью добавления других языков.

Page 80: Виталий Харисов "Настоящее и будущее БЭМ"

Как помочь?Сайт bem.info

80

— Перевод документации на другие языки

— Поддержка актуальности перевода

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

Page 81: Виталий Харисов "Настоящее и будущее БЭМ"

Как помочь?Сайт bem.info

81

— Перевод документации на другие языки

— Поддержка актуальности перевода

— Документация по настройке (Windows)

— Туториалы по внедрению БЭМ на сайты

* написание документации * по настройке окружения (например, в Windows) * туториалы по внедрению БЭМ в сайты, где он не используется

Page 82: Виталий Харисов "Настоящее и будущее БЭМ"

Инструменты

82

В разработке bem-tools мы сейчас сосредоточены на сборке проекта.

При этом есть вещи, которые мы хотим сделать в bem-tools помимо этого и тут может пригодиться ваша помощь.

Page 83: Виталий Харисов "Настоящее и будущее БЭМ"

bem moveИнструменты

83

— перемещение сущностей между уровнями

— переименование сущностей

— блок в элемент и наоборот

— перемещение модификаторов

* перемещение сущностей между уровнями переопределения с учётом настроек уровней переопределения * переименование сущностей * превращение блоков в элементы и наоборот * перемещение модификаторов * между блоками и элементами

Page 88: Виталий Харисов "Настоящее и будущее БЭМ"

Инфраструктура библиотек блоков

88

— создавать свои библиотеки блоков

— документация к библиотеке

— changelog'и

— скрипты миграции между версиями

— сайт с примерами и документацией

…неким набором правил и инструментов, которые позволят разработчикам

* создавать свои библиотеки блоков * писать к ним документацию * скрипты миграции с версии на версию * changelog'и * построить сайт для библиотеки блоков с живыми примерами и документацией

Page 90: Виталий Харисов "Настоящее и будущее БЭМ"

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

90

— много вместо одной

— логическая целостность

— независимое использование

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

Page 91: Виталий Харисов "Настоящее и будущее БЭМ"

Зачем?Библиотеки блоков

91

— разные мейнтейнеры

— разные релизные циклы

— проще развивать и поддерживать

Зачем это нужно делать:

* много маленьких библиотек проще раздать в поддержку разным людям * маленькие библиотеки можно выпускать с разной скоростью * проще развивать и поддерживать

Page 92: Виталий Харисов "Настоящее и будущее БЭМ"

ПримерыБиблиотеки блоков

92

— bl-coreкорневые блоки на которых строятся последующие

— bl-genericблоки, которые часто встречаются в вёрстке страниц: ссылки, иконки

— bl-formблоки для реализации форм, в том числе контролы форм

Можно выделить в отдельные библиотеки ядро, блоки общего назначения, для работы с формами…

Page 93: Виталий Харисов "Настоящее и будущее БЭМ"

ПримерыБиблиотеки блоков

93

— bl-layoutтиповые раскладки страниц

— bl-searchпоисковая форма и выдача результатов поиска

— bl-Oashподключение флеша на страницу

— bl-authаутентификация пользователей

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

Page 95: Виталий Харисов "Настоящее и будущее БЭМ"

Как сейчасСреда разработки

95

— работа с файловой системой

— поддержка целостности

— руками

— bem-tools

Сейчас разработчик, использующий БЭМ слишком близко находится к файловой системе и тратит часть своего времени на поддержание целостности проекта на файловой системе руками или с помощью bem-tools.

Page 96: Виталий Харисов "Настоящее и будущее БЭМ"

Как хотимСреда разработки

96

— работа с БЭМ, а не файлами

— работа на всех платформах

— разработка в браузере!

— доступ к коду сайта рядом с самим сайтом

— Cloud9?

Нужна среда для разработки, которая будет знать про БЭМ, про уровни переопределения и помогать разработчику писать код так, чтобы он был хорошо структурированным.

При этом эта среда не должна быть привязана к какой-то определённой платформе.

В идеале она вообще должна работать в браузере.

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

Мы сейчас смотрим в сторону Cloud9.

Page 98: Виталий Харисов "Настоящее и будущее БЭМ"

НастоящееПодведём итог

98

— Методология

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

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

— Шаблонизатор bemhtml

— JavaScript фреймворк i-bem.js

Мы сегодня рассмотрели настоящее БЭМ, увидели, что он состоит из:

* Методологии * Инструментов * Библиотеки блоков * Технологий для шаблонизации и построения клиентского кода на JavaScript

Page 99: Виталий Харисов "Настоящее и будущее БЭМ"

БудущееПодведём итог

99

— Полный стек

— Сайт bem.info

— Развитие инструментов

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

— Среда разработки

И попробовали заглянуть в ближайшее будущее:

* Мы строим полный стек * Будем сделать сайт со всей информацией * Дальше развивать инструменты * Делать библиотеки блоков * И среду для разработки