Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

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

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

Avatar for Konstantin Dzuin

Konstantin Dzuin

October 13, 2016
Tweet

More Decks by Konstantin Dzuin

Other Decks in Programming

Transcript

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

    Практическая методология направлена на решение практических проблем и целенаправленное преобразование мира. — Wikipedia
  2. Новые технологии • Постоянно трансформируют методологию разработки • легко, весело

    и интересно • некоторые вещи упрощаются • Легко применять для проектов с чистого листа • А что в реальной жизни?
  3. Desktop Web > 4M активных пользователей в день > 400

    продуктовых задач за год +недавно перешли на
 client-side rendering, strict api = 8 разработчиков
 > 10 лет кодовой базе
  4. Mobile Web > 2M активных пользователей в день > 250

    продуктовых задач за год + full redesign & restyling = 10 разработчиков
 > 5 лет кодовой базе
  5. Мобильный веб 2012 – 2015 • java/javascript/html/css разработчики • отсутствие

    единой методологии html/css • высокая цена поддержки и масштабирование HTML5 WAP
 Java -> HTML
  6. Мобильный веб – 09/2015
 точка “пересборки” • специальзация 
 html/css

    разработчики • формирование единой html/css методологии • снижение цены поддержки и масштабирования
  7. Будущее • Специализация: html/css разработчики • Единая методология • Код

    шаринг • библиотека компонент • styleguide • Гибкость Desktop Web Mobile Web
  8. <div class="list">
 <div class="item">
 <div class="userpic">
 <div class="img"></div>
 </div>
 <div

    class="message">
 </div>
 </div>
 </div>
 .list {}
 .item {}
 .userpic {}
 .message {} “Колхоз”
  9. var el = $.satisfy('div.list'); data.forEach(i = > { $.satisfy( 'div.item

    div.message[innerHTML=“' + i + ‘“"]' ).appendTo(el); }); .list {
 .item {
 .userpic {}
 &-message {}
 }
 } JS “головного мозга”
  10. <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 {} Наши дни
  11. • Изоляция CSS-кода модуля • случайные конфликты имен • Безопасное

    переиспользование • Безопасная разработка нового • Синтаксический сахар CSS модули - плюсы
  12. <div class="list">
 <div class="item">
 <div class="userpic"></div>
 <div class="message">
 Lorem ipsum

    dolor sit amet.
 </div>
 </div>
 </div> .list {} → .list_hash {}
 .item {} → .item_hash {}
 .userpic {} → .userpic_hash {}
 .message {} → .message_hash {} CSS Модули
  13. • Ноооо, хотим из компонента А повлиять на Б •

    Цена перехода? CSS модули - минусы
  14. Компози́ция — составление целого из частей; организующий компонент художественной формы,

    придающий произведению единство и цельность, соподчиняющий его элементы друг другу и всему замыслу художника. — Wikipedia
  15. • У всех по 5px, почему бы и нет? •

    У всех по 5px, родитель сбросит • У всех по 5px, но не у последнего • Между соседними по 5px Отношения компонент
  16. • Атом – Молекула – Организм • Кирпич – Стена

    – Дом • Компонент – Компонент – Компонент • Компонент – Композиция – Композиция композиций Как называть?
  17. Итого: 1. БЭМ? Модули? - что удобно 2. Компоненты: железные

    и резиновые 3. Композиция: отношения компонент
  18. Прекрасное далёко Использования нейтральных элементов – путь к подвижной системе

    Среднее время жизни кода позволяет методологии быть подвижной и адаптироваться Как мы можем улучшить систему? Легко!