41
Методология: БЭМ, Модули, Отношения Константин Дзюин 13 октября 2016 года Москва, Badoo

Методология: БЭМ, Модули, Отношения

Embed Size (px)

Citation preview

Page 1: Методология: БЭМ, Модули, Отношения

Методология: БЭМ, Модули, Отношения

Константин Дзюин13 октября 2016 года

Москва, Badoo

Page 2: Методология: БЭМ, Модули, Отношения

Привет!

Константин Дзюин

Мобильный Веб Разработчик (html/css) Badoo, Лондон, Великобритания

html/css разработчик - 14 летBadoo - 3 года

Twitter: @kdzuin

Page 3: Методология: БЭМ, Модули, Отношения

Методоло́гия — учение о методах, способах и стратегиях исследования предмета.

Практическая методология направлена на решение практических проблем и

целенаправленное преобразование мира.

— Wikipedia

Page 4: Методология: БЭМ, Модули, Отношения

Новые технологии

• Постоянно трансформируют методологию разработки

• легко, весело и интересно

• некоторые вещи упрощаются

• Легко применять для проектов с чистого листа

• А что в реальной жизни?

Page 5: Методология: БЭМ, Модули, Отношения

Desktop Web> 4M активных пользователей в день

> 400 продуктовых задач за год

+недавно перешли на client-side rendering, strict api

= 8 разработчиков> 10 лет кодовой базе

Page 6: Методология: БЭМ, Модули, Отношения

Mobile Web> 2M активных пользователей в день

> 250 продуктовых задач за год

+ full redesign & restyling

= 10 разработчиков> 5 лет кодовой базе

Page 7: Методология: БЭМ, Модули, Отношения

Мобильный веб 2012 – 2015

• java/javascript/html/css разработчики

• отсутствие единой методологии html/css

• высокая цена поддержки и масштабирование

HTML5WAP

Java -> HTML

Page 8: Методология: БЭМ, Модули, Отношения

Мобильный веб – 09/2015точка “пересборки”

• специальзация html/css разработчики

• формирование единой html/css методологии

• снижение цены поддержки и масштабирования

Page 9: Методология: БЭМ, Модули, Отношения

Будущее

• Специализация: html/css разработчики

• Единая методология

• Код шаринг

• библиотека компонент

• styleguide

• Гибкость

Desktop Web

Mobile Web

Page 10: Методология: БЭМ, Модули, Отношения

Эволюция

Page 11: Методология: БЭМ, Модули, Отношения

<div class="list"> <div class="item"> <div class="userpic"> <div class="img"></div> </div> <div class="message"> </div> </div> </div> .list {} .item {} .userpic {} .message {}

“Колхоз”

Page 12: Методология: БЭМ, Модули, Отношения

var el = $.satisfy('div.list'); data.forEach(i = > { $.satisfy( 'div.item div.message[innerHTML=“' + i + ‘“"]' ).appendTo(el); });

.list { .item { .userpic {} &-message {} } }

JS “головного мозга”

Page 13: Методология: БЭМ, Модули, Отношения

Модульность

Page 14: Методология: БЭМ, Модули, Отношения

Безопасность

Page 15: Методология: БЭМ, Модули, Отношения

Безопасность

Page 16: Методология: БЭМ, Модули, Отношения

Из грязи в князи BEM

Page 17: Методология: БЭМ, Модули, Отношения

БЭМ

.block

.block__element

.block--modifier

Page 18: Методология: БЭМ, Модули, Отношения

БЭМ: Блоки

Page 19: Методология: БЭМ, Модули, Отношения

БЭМ: Элементы

Page 20: Методология: БЭМ, Модули, Отношения

БЭМ: Модификаторы

Page 21: Методология: БЭМ, Модули, Отношения

On Air CodePen time

Page 22: Методология: БЭМ, Модули, Отношения

<div class="contact-list"> <div class="contact-item"> <div class="userpic"></div> <div class="contact-item__message"> Lorem ipsum dolor sit amet. </div> </div> </div>

.contact-list {}

.contact-item {}

.contact-item .userpic {}

.contact-item__message {}

Наши дни

Page 23: Методология: БЭМ, Модули, Отношения

Desktop Web

Mobile Web

БЭМ

Page 24: Методология: БЭМ, Модули, Отношения

• случайные коллизии имён

• введение нового разработчика

• многабукаф

• BEM в Badoo – name convention, а не BEM Components

БЭМ: минусы

Page 25: Методология: БЭМ, Модули, Отношения

CSS Модули и влияние на методологию

Page 26: Методология: БЭМ, Модули, Отношения

• Изоляция CSS-кода модуля

• случайные конфликты имен

• Безопасное переиспользование

• Безопасная разработка нового

• Синтаксический сахар

CSS модули - плюсы

Page 27: Методология: БЭМ, Модули, Отношения

On Air CodePen time

Page 28: Методология: БЭМ, Модули, Отношения

<div class="contact-list"> <div class="contact-item"> <div class="userpic"></div> <div class="contact-item__message"> Lorem ipsum dolor sit amet. </div> </div> </div>

.contact-list {}

.contact-item {}

.contact-item .userpic {}

.contact-item__message {}

CSS Модули

Page 29: Методология: БЭМ, Модули, Отношения

• Ноооо, хотим из компонента А повлиять на Б

• Цена перехода?

CSS модули - минусы

Page 30: Методология: БЭМ, Модули, Отношения

Композиция

Page 31: Методология: БЭМ, Модули, Отношения

Компози́ция — составление целого из частей; организующий компонент

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

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

— Wikipedia

Page 32: Методология: БЭМ, Модули, Отношения

• У всех по пять, почему бы и нет?

• У всех по пять, родитель сбросит

• У всех по пять, но не у последнего

• Между соседними по пять

Отношения компонент

Page 33: Методология: БЭМ, Модули, Отношения

• Атом – Молекула – Организм

• Кирпич – Стена – Дом

• Компонент – Компонент – Компонент

• Компонент – Композиция – Композиция композиций

Как называть?

Page 34: Методология: БЭМ, Модули, Отношения

Немного схем

Page 35: Методология: БЭМ, Модули, Отношения

• Компонент нейтрален вне системы

• Отношения определяются в системе

Отношения компонент

Page 36: Методология: БЭМ, Модули, Отношения

On Air CodePen time

Page 37: Методология: БЭМ, Модули, Отношения

Итого:1. БЭМ? Модули? - что удобно

2.Компоненты: железные и резиновые

3.Композиция: отношения компонент

Page 38: Методология: БЭМ, Модули, Отношения

Прекрасное далёкоИспользования нейтральных элементов – путь к подвижной системе

Среднее время жизни кода позволяет методологии быть подвижной и адаптироваться

Как мы можем улучшить систему?

Легко!

Page 39: Методология: БЭМ, Модули, Отношения

Вопросы?

Page 40: Методология: БЭМ, Модули, Отношения

The original, largest and leading dating network

Page 41: Методология: БЭМ, Модули, Отношения

Спасибо!