Александр Баумгертнер — Преимущества БЭМ для...

52
Преимущества БЭМ для небольших проектов и компаний BEMup в рамках YaC 2013 Москва

Upload: yandex

Post on 14-Jun-2015

930 views

Category:

Technology


2 download

DESCRIPTION

БЭМ хорош не только для крупных проектов и больших команд. БЭМ — не про именование CSS-классов и i-bem. Он вполне подходит для прототипирования. В докладе пойдет речь о библиотеке для создания основных блоков (форма регистрации, список новостей и статей, категория товаров, карточка товара, форма заказа и т.д.), сборке статичной html-версии сайта и практике разработки.

TRANSCRIPT

Page 1: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Преимущества БЭМ для небольших проектов и компаний

BEMup в рамках YaC

2013 Москва

Page 2: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Расскажу о:

● Немного истории, независимые блоки● Как стал применять● Какие получил плюсы● Свои наработки, заметки, тонкости

Page 3: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Немного истории

2009-2010 до БЭМ, «независимые блоки»

Page 4: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Немного истории

2009-2010 до БЭМ, «независимые блоки»:

● не id, а классы● каждый блок имеет префикс (b-)● в таблице стилей нет классов вне блоков

http://vitaly.harisov.name/article/independent-blocks.html

Page 5: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Немного истории

«независимые блоки», уже плюсы:

● Независимость верстки от каскада. ● Произвольный повтор блоков● Простая организация верстки

Page 6: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний
Page 7: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Концепция независимых блоков развилась в БЭМ

Page 8: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

+ файловая структура css/js

+ bem-tools для генерации файлов технологий

+ bemjson

+ bemhtml

+ i-bem

+ самое главное...

«Блок-Элемент-Модификатор»

Page 9: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

+ файловая структура css/js

+ tools для генерации файлов технологий

+ bemjson

+ bemhtml

+ i-bem

+ project-stub!+ project-stub!

«Блок-Элемент-Модификатор»

Page 10: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Bem-tools до project-stub

Page 11: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Project-stub

Page 12: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Project-stub

make

makeservercommon.blocksdesktop.blocks.techs.configs

Page 13: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Project-stub

server

makeservercommon.blocksdesktop.blocks.techs.configs

Page 14: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Но есть проблема...

Page 15: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Как видит свой проект html-верстальщик небольшой студии

Page 16: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Как он видит bem-tools

Page 17: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Rocket science

Page 18: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Для «классического» верстальщика непонятно, зачем:

● Bemjson? JavaScript Object Notation http://ru.wikipedia.org/wiki/JSON

Page 19: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний
Page 20: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний
Page 21: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Для «классического» верстальщика непонятно, зачем:

● bemjson ● bemhtml● i-bem● Папка на каждый блок/элемент (это самое понятное из непонятного)

● Nodejs, npm, git, Консоль

Page 22: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Это не так страшно, главное попробовать.

http://habrahabr.ru/post/162385/

Page 23: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Это не так страшно, главное попробовать.

Bemjson + Bemhtml = Bemjson + Bemhtml =

● отвязываемся от ассемблера html.● думаем о блоках, а не о div● возможность быстрого

прототипирования верстки, например:

Page 24: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Bemjson страницы, на которой нужно показать список секций каталога

Page 25: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Правила генерации html

Page 26: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Это не так страшно, главное попробовать.

i-bem i-bem ● js в декларативном стиле.● инициализация и работа js блока по требованию (live)● удобное api для работы

● хорошо структурированный и узнаваемый код :)

Page 27: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

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

✔Действия по установке модификатора

✔Поиск элементов

✔Инициализация по требованию

Page 28: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

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

BEM.DOM.decl('i-menu', {}, {});

if ($('.i-menu').length)

Page 29: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Действия на изменение модификаторов

<div class="b-popupa b-popupa__without-padding b-popupa_theme_ffffff b-popupa_direction_down b-popupa_is-bem_yes i-bem b-dropdowna__popup b-dropdowna__menu b-popupa_js_inited"> ... </div>

Page 30: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Действия на изменение модификаторов

Page 31: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Поиск и работа элементами блока

$('i-menu__item_state_current')

Page 32: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Инициализация по требованию

Page 33: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Больше примеров!● https://github.com/varya/bem-js-tutorial

Page 34: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Блоки атомарны, написаны в едином стиле (установка/снятие модификаторов, изменение элементов и тд)

Page 35: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Сборка статичного сайта

Page 36: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Сборка статичного сайтаПозволяет получить все html-страницы с собранным css, js, картинками, например, такой структуры:

Скрипт https://github.com/alexbaumgertner/bem-static-build

Page 37: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

+ Структурированный код, написанный по продуманной методологии. Возможность менять html-реализацию блоков (например для кроссбраузерности или перехода на html5)

+ Своя, растущая библиотека готовых блоков решений.

+ Расширяемость и рост как проекта так и команды.

+ Быстрое прототипирование верстки в вашем дизайне (если вы студия)

Это не так страшно, главное попробовать.

Page 38: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Растем вместе!

Page 39: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний
Page 40: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Ваш вклад

● Делиться информацией о использованиях

● Составлять примеры (возможно, на основе своих библиотек)

https://github.com/varya/bem-js-tutorial/wiki/Ideas-of-examples● Issues

– https://github.com/bem/bem-core/issues

– https://github.com/bem/bem-tools/issues

– https://github.com/bem/project-stub/issues

Page 41: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Ваш вклад

Page 42: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Свои наработки, заметки, тонкости

Page 43: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Все на своих местах

Сделать папки избранного для текущего блока, страниц bemjson

Page 44: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Все на своих местах

Page 45: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

.bashrc

alias 'bemcr'='bem create -l desktop.blocks/ -b'

alias 'bemscr'='bem create -l studioIDEI.blocks/ -b'

alias 'bempcr'='bem create -l desktop.bundles/ -b'

Page 46: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

WebStorm live template

Page 47: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

WebStorm live templatehttps://github.com/apsavin/bem-idea-live-templates

Page 48: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Плюсы использования БЭМ для небольших проектов и компаний:

● методология + реализация в project-stub● свои блоки● рост команды● прототипирование верстки● активное и отзывчивое сообщество. http://clubs.ya.ru/bem/

Page 49: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Bonus track: Заготовка для нескольких типичных страниц сайтов и их блоков:

https://github.com/alexbaumgertner/prototype-on-project-stub

Page 50: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Bonus track: Заготовка для нескольких типичных страниц сайтов и их блоков:

Page 51: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Еще информация:

● Основы: http://ru.bem.info/

● Еще хорошие основы http://bemclub-in.herokuapp.com/#problems

● http://habrahabr.ru/post/151931/ (комментарии)

● http://delka.name/blog/2013/04/bem-otkroveniya-prinyavshih-veru/

● Для команды дизайнер/верстальщик/серверсайд «БЭМ: от методологии до платформы»: http://tech.yandex.ru/events/yasubbotnik/riga-apr-2013/talks/686/

● Для дизайнера: БЭМ для PSD http://clubs.ya.ru/bem/replies.xml?item_no=1801 , http://test.mne-vezet.ru/pr/1/

● Об опыте погружения в методологию http://delka.name/blog/2013/04/bem-otkroveniya-prinyavshih-veru/

Page 52: Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний

Спасибо!

Александр Баумгертнер, дизайн-студия «ИДЕИ» http://www.d-idei.ru/

@[email protected]://github.com/alexbaumgertner

Буду рад вопросам!