127
От БЭМ-методологии до Мануфактуры проектов Виталий Харисов, Иван Воищев 28 марта 2015, CodeFest

От БЭМ-методологии до Мануфактуры проектов

Embed Size (px)

Citation preview

Page 1: От БЭМ-методологии до Мануфактуры проектов

От БЭМ-методологии до Мануфактуры

проектов

Виталий Харисов, Иван Воищев 28 марта 2015, CodeFest

Page 2: От БЭМ-методологии до Мануфактуры проектов

Слайд про меня

Page 3: От БЭМ-методологии до Мануфактуры проектов

Оптимальная вёрстка

Page 4: От БЭМ-методологии до Мануфактуры проектов

#foot div div *

Page 5: От БЭМ-методологии до Мануфактуры проектов
Page 6: От БЭМ-методологии до Мануфактуры проектов
Page 7: От БЭМ-методологии до Мануфактуры проектов
Page 8: От БЭМ-методологии до Мануфактуры проектов

«Чтобы сэкономить байты,мы готовы потом потратить часы на рефакторинг?»

veged:

Page 9: От БЭМ-методологии до Мануфактуры проектов

«Я знаю CSS2, что такое * и когда её надо применять,

а когда не надо»

vitaly:

Page 10: От БЭМ-методологии до Мануфактуры проектов

Ох…

Page 11: От БЭМ-методологии до Мануфактуры проектов

Вёрстканезависимыми блоками

Page 12: От БЭМ-методологии до Мануфактуры проектов

#id .class

Вёрстканезависимыми блоками

Page 13: От БЭМ-методологии до Мануфактуры проектов

#id .class.block h2 .block-title

Вёрстканезависимыми блоками

Page 14: От БЭМ-методологии до Мануфактуры проектов

ClientSide’2007vitaly.harisov.name/article/independent-blocks.html

Page 15: От БЭМ-методологии до Мануфактуры проектов

Оптимизация работы разработчиков и команд

Page 16: От БЭМ-методологии до Мануфактуры проектов

Разработчик— Понимает свой и чужой код — Повторно использует код — Использует готовые решения

Page 17: От БЭМ-методологии до Мануфактуры проектов

В команде есть— Общий язык — Упрощение передачи задач — Продукт, а не инфраструктура

Page 18: От БЭМ-методологии до Мануфактуры проектов

Команды— Используют работу других команд — Обмениваются специалистами — Общее хранилище знаний и кода

Page 19: От БЭМ-методологии до Мануфактуры проектов

?

Page 20: От БЭМ-методологии до Мануфактуры проектов

БЭМ-методология

Page 21: От БЭМ-методологии до Мануфактуры проектов

Блок

Page 22: От БЭМ-методологии до Мануфактуры проектов

Блок Элемент

Page 23: От БЭМ-методологии до Мануфактуры проектов

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

Page 24: От БЭМ-методологии до Мануфактуры проектов

.block__element_modifier

Page 25: От БЭМ-методологии до Мануфактуры проектов

project.css@import (blocks/head.css)@import (blocks/foot.css)@import (blocks/user.css)

Page 26: От БЭМ-методологии до Мануфактуры проектов

Былоcss/ user.css js/ user.js xsl/ user.xsl

Сталоblocks/ user/ user.css user.js user.xsl

Page 27: От БЭМ-методологии до Мануфактуры проектов

Было Сталоcss/ user.css js/ user.js xsl/ user.xsl

blocks/ user/ user.css user.js user.xsl user.spec.js

Page 28: От БЭМ-методологии до Мануфактуры проектов

OOCSS, SMACSS

Page 29: От БЭМ-методологии до Мануфактуры проектов

Не только CSS!

Page 30: От БЭМ-методологии до Мануфактуры проектов

Технологии блока.html

.css

Page 31: От БЭМ-методологии до Мануфактуры проектов

.html.css

.js

Технологии блока

Page 32: От БЭМ-методологии до Мануфактуры проектов

.html.css

.js.tmpl

Технологии блока

Page 33: От БЭМ-методологии до Мануфактуры проектов

.html.css

.js.tmpl

.md

Технологии блока

Page 34: От БЭМ-методологии до Мануфактуры проектов

.html.css

.js.tmpl

.ru.md.en.md

Технологии блока

Page 35: От БЭМ-методологии до Мануфактуры проектов

.html.css

.js.tmpl

.ru.md.en.md

.spec.js

Технологии блока

Page 36: От БЭМ-методологии до Мануфактуры проектов

Web Components

Page 37: От БЭМ-методологии до Мануфактуры проектов

Можно использовать сейчас

Page 38: От БЭМ-методологии до Мануфактуры проектов

Можно использовать сейчас

ещё вчера

Page 39: От БЭМ-методологии до Мануфактуры проектов

bem.info/method

Page 40: От БЭМ-методологии до Мануфактуры проектов

Разработчик— Понимает свой и чужой код— Повторно использует код— Использует готовые решения

Page 41: От БЭМ-методологии до Мануфактуры проектов

В команде есть— Общий язык— Упрощение передачи задач— Продукт, а не инфраструктура

Page 42: От БЭМ-методологии до Мануфактуры проектов

Команды— Используют работу других команд — Обмениваются специалистами— Общее хранилище знаний и кода

Page 43: От БЭМ-методологии до Мануфактуры проектов

БЭМ-платформа

Page 44: От БЭМ-методологии до Мануфактуры проектов

JavaScript

Page 45: От БЭМ-методологии до Мануфактуры проектов

Технологии— BEMJSON — БЭМ-дерево — шаблонизаторы BEMHTML и BH — шаблонизатор BEMTREE

Page 46: От БЭМ-методологии до Мануфактуры проектов

Сборка проекта

— deps.js в блоках — enb-bem

Page 47: От БЭМ-методологии до Мануфактуры проектов

Библиотеки блоков— bem-core — bem-components

Page 48: От БЭМ-методологии до Мануфактуры проектов

bem-core— базовая библиотека — js-фреймворк i-bem.js — 19 блоков-хелперов

Page 49: От БЭМ-методологии до Мануфактуры проектов

bem-components— использует bem-core, 20+ блоков — Stylus, Autoprefixer — шаблонизаторы BEMHTML и BH — опциональный дизайн

Page 50: От БЭМ-методологии до Мануфактуры проектов

Тестирование— unit-тесты для JS — тесты на шаблоны — тесты скриншотами (gemini) — TravisCI

Page 51: От БЭМ-методологии до Мануфактуры проектов

Быстрый стартgit clone https://github.com/ bem/project-stub npm install npm start

Page 52: От БЭМ-методологии до Мануфактуры проектов

ru.bem.info/tutorials/quick-start-static

Page 53: От БЭМ-методологии до Мануфактуры проектов

Разработчик— Понимает свой и чужой код — Повторно использует код — Использует готовые решения

Page 54: От БЭМ-методологии до Мануфактуры проектов

В команде есть— Общий язык — Упрощение передачи задач — Продукт, а не инфраструктура

Page 55: От БЭМ-методологии до Мануфактуры проектов

Команды— Используют работу других команд — Обмениваются специалистами — Общее хранилище знаний и кода

Page 56: От БЭМ-методологии до Мануфактуры проектов

Сообщество

Page 57: От БЭМ-методологии до Мануфактуры проектов

Open Source

Page 58: От БЭМ-методологии до Мануфактуры проектов

bem.info

Page 59: От БЭМ-методологии до Мануфактуры проектов

bem.info/forum

Page 60: От БЭМ-методологии до Мануфактуры проектов

git.io/bem-incubator

Page 61: От БЭМ-методологии до Мануфактуры проектов

А ещё— Митапы, хакатоны — Доклады на конференциях — Помогаем компаниям

Page 62: От БЭМ-методологии до Мануфактуры проектов

Команды— Используют работу других команд— Обмениваются специалистами — Общее хранилище знаний и кода

Page 63: От БЭМ-методологии до Мануфактуры проектов

Итог

Page 64: От БЭМ-методологии до Мануфактуры проектов

Мы всё ещё в пути

Page 65: От БЭМ-методологии до Мануфактуры проектов

Давайте идти вместе!

Page 66: От БЭМ-методологии до Мануфактуры проектов

[email protected]

@harisov

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

Page 67: От БЭМ-методологии до Мануфактуры проектов

МАНУФАКТУРАИнтерактивное агентство

Page 68: От БЭМ-методологии до Мануфактуры проектов

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

МАНУФАКТУРАИнтерактивное агентство

Как мы жили до БЭМа и к чему пришли с ним

2 / 61

CodeFest 2015

Page 69: От БЭМ-методологии до Мануфактуры проектов

ОБО МНЕ

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 3 / 61

В «Мануфактуре» 3 года

Руководитель группы разработки

Воищев Иван

@voischev

Page 70: От БЭМ-методологии до Мануфактуры проектов

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 4 / 61

СОДЕРЖАНИЕПроблемы

• Старый подход

Решение

• Собственные инструменты

• BEM full stack (Сервис Myweddy.ru)

Профит

• Воркфлоу

• Библиотеки блоков и продукты

• О команде

2011

2012

2013

Cейчас

2014

Page 71: От БЭМ-методологии до Мануфактуры проектов

5 / 61

ПРОБЛЕМЫ

• Большие CSS файлы• HTML – это хаос!

• JS где-то сбоку

2011 год

• Нет общего языка общения в команде• Быстро развивающаяся индустрия

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

• Низкая скорость разработки

Page 72: От БЭМ-методологии до Мануфактуры проектов

6 / 61

Проблемы

Page 73: От БЭМ-методологии до Мануфактуры проектов

7 / 61

Проблемы

Page 74: От БЭМ-методологии до Мануфактуры проектов

8 / 61Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

Page 75: От БЭМ-методологии до Мануфактуры проектов

9 / 61

РЕШЕНИЕ 2012 год

• Выбрать методологию разработки• Инструменты сборки

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

Page 76: От БЭМ-методологии до Мануфактуры проектов

10 / 61Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

Page 77: От БЭМ-методологии до Мануфактуры проектов

11 / 61Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

Сходство

Page 78: От БЭМ-методологии до Мануфактуры проектов

13 / 61Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

Независимость

Page 79: От БЭМ-методологии до Мануфактуры проектов

13/ 61Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

Page 80: От БЭМ-методологии до Мануфактуры проектов

14/ 61

ЗАДАЧИ ПЕРЕД ИНСТРУМЕНТОМ СБОРКИ ПРОЕКТОВ 2012 год

• Все технологии блока в одном месте • Простая модификация кода • Полное разделение ответственности разработчиков • Автоматическая подготовка кода к продакшену • Удобный деплой проектов

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

Page 81: От БЭМ-методологии до Мануфактуры проектов

15 / 61Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

Первый взгляд на bem-tools в 2012

Page 82: От БЭМ-методологии до Мануфактуры проектов

8 / 94Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

Первый взгляд на bem-tools в 2012

• Не хватало технологий для связи с бэкендом

• Мало документации • Высокий порог входа

16 / 61

Page 83: От БЭМ-методологии до Мануфактуры проектов

17 / 61

СОБСТВЕННЫЕ ИНСТРУМЕНТЫ СБОРКИ 2012-2013

• Основа на Zend Framework • Blitz Templates + хелперы • Собственная система сборки • Поддержали БЭМ структуру хранения файлов • Сборка в дев. и продакшен режиме • Фриз статики

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

Page 84: От БЭМ-методологии до Мануфактуры проектов

18 / 61

Собственные инструменты сборки

• Ходит в папку с именем блока • Подключает шаблоны, css и jsи др.

Page 85: От БЭМ-методологии до Мануфактуры проектов

19 / 61

Собственные инструменты сборки

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

Page 86: От БЭМ-методологии до Мануфактуры проектов

20 / 61

• Работали с технологиями которые мы хорошо знали и умели • Заточен под наши процессы

Собственные инструменты сборки

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

ПЛЮСЫ

Page 87: От БЭМ-методологии до Мануфактуры проектов

• Нужно поддерживать и развивать • Часть логики представления в контролерах • Подсветка синтаксиса • Нет документации • Нет переопределения шаблонов

Собственные инструменты сборки

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

МИНУСЫ

21 / 61

Page 88: От БЭМ-методологии до Мануфактуры проектов

8 / 94

myweddy.ru

Page 89: От БЭМ-методологии до Мануфактуры проектов

ТЕМЫ ОФОРМЛЕНИЯ

Myweddy.ru

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 23 / 61

Page 90: От БЭМ-методологии до Мануфактуры проектов

Myweddy.ru

8 / 94

Page 91: От БЭМ-методологии до Мануфактуры проектов

8 / 94

Page 92: От БЭМ-методологии до Мануфактуры проектов

8 / 94

Page 93: От БЭМ-методологии до Мануфактуры проектов

ПАЛИТРЫ ТЕМ

Myweddy.ru

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 27 / 61

Page 94: От БЭМ-методологии до Мануфактуры проектов

28 / 61

Page 95: От БЭМ-методологии до Мануфактуры проектов

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 29 / 61

Page 96: От БЭМ-методологии до Мануфактуры проектов
Page 97: От БЭМ-методологии до Мануфактуры проектов

СНОВА BEM STACK?• Появилась BEMTREE технология • bem-tools решает все задачи, поставленные перед инструментом сборки • Шаблонизатор, в котором можно всё • Больше нет проблем с подсветкой синтаксиса BEMHTML • Уровни переопределения • Модульная система для JS • CSS препроцессор на выбор из коробки • Любой бэкенд • Появилась актуальная документация

Профит с 2013

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 31 / 61

Page 98: От БЭМ-методологии до Мануфактуры проектов

Пример BEMTREE

32 / 61

Page 99: От БЭМ-методологии до Мануфактуры проектов

Доопределение BEMHTML

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 33 / 61

Page 100: От БЭМ-методологии до Мануфактуры проектов

РЕЗУЛЬТАТ СБОРКИ• _common.bemtree.js • _common.bemhtml.js • _common.js • _common.css (Autoprefixer) • папка с фризом (img, fonts, svg …)

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 34 / 61

Page 101: От БЭМ-методологии до Мануфактуры проектов

DATA  → BEMTREE → BEMHTML → HTML

Nodejs

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

Бэкенд сервер

json

35 / 61

Page 102: От БЭМ-методологии до Мануфактуры проектов

ВОРКФЛОУ• Простой редактор кода • Препроцессор css • npm, bower, [git hooks, jshint, jscs, csscomb…] … Автоматизация • Любой бэкенд сервер

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 36 / 61

Page 103: От БЭМ-методологии до Мануфактуры проектов

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 37 / 61

myweddy.ru ashifin-gubernator.ru posmotri-vrn.ru

voronezharts.rudomjourvrn.ru 10+

polavkam.ru

ihvoronezh.comstudioelegantart.ru

Одностраничники Лендинги другие задачи

Page 104: От БЭМ-методологии до Мануфактуры проектов

БИБЛИОТЕКИ БЛОКОВ• bem-core • bem-components • bem-grid • bem-social • bem-factory • manufactura-bl • factory-fonts

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 38 / 61

Page 105: От БЭМ-методологии до Мануфактуры проектов

checkbox

bem-components / popup + menu

link linklink

factory-fonts

Page 106: От БЭМ-методологии до Мануфактуры проектов

bem-factory / fancybox

bem-components / menu

Page 107: От БЭМ-методологии до Мануфактуры проектов

manufactura-bl / slider

Page 108: От БЭМ-методологии до Мануфактуры проектов

bem-components / button

popupinput select

textarea button

Page 109: От БЭМ-методологии до Мануфактуры проектов

manufactura-bl / map

factory

bem-social

Page 110: От БЭМ-методологии до Мануфактуры проектов

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 44 / 61

Page 111: От БЭМ-методологии до Мануфактуры проектов

BEM-FONT

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 45 / 61

bit.ly/bem-font

Page 112: От БЭМ-методологии до Мануфактуры проектов

BEM-GRID

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 46 / 61

bit.ly/bem-grid

Page 113: От БЭМ-методологии до Мануфактуры проектов

8 / 94

BEM-SOCIAL

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

bit.ly/bem-social

Page 114: От БЭМ-методологии до Мануфактуры проектов

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 48 / 61

bit.ly/bem-forms

BEM-FORMS

Page 115: От БЭМ-методологии до Мануфактуры проектов

ВНУТРЕННИЕ РАЗРАБОТКИ

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

• bem-factory • manufactura-bl • factory-fonts • свой project-stub • продукты

49 / 61

Page 116: От БЭМ-методологии до Мануфактуры проектов

ИТОГИ

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

• Полное разделение ответственности у разработчиков • Автоматизация многих процессов • Реиспользуемый код • Библиотеки блоков • Один язык общения для всей команды • Простая поддержка кода • Уменьшились сроки разработки

50 / 61

Page 117: От БЭМ-методологии до Мануфактуры проектов

ПРО СРОКИ

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 51 / 61

МЭР ГУБЕРНАТОР

Frontend 198 217

Backend 180 80

378 часов 297 часов(- 81 час)

первые результаты

Page 118: От БЭМ-методологии до Мануфактуры проектов

ПРО СРОКИ

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 52 / 61

сегодня

• бэкенд на 25% – 40% быстрее • фронтенд на 0% – 10% быстрее (ожидаем еще ускорения)

Ускорение за счет

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

Page 119: От БЭМ-методологии до Мануфактуры проектов

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 53 / 61

Бэкенд Фронтенд

Page 120: От БЭМ-методологии до Мануфактуры проектов

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 54 / 61

ПРОДУКТОВАЯ ИСТОРИЯ

Page 121: От БЭМ-методологии до Мануфактуры проектов

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 55 / 61

Page 122: От БЭМ-методологии до Мануфактуры проектов

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 49 / 60

bit.ly/factory-redactor

Page 123: От БЭМ-методологии до Мануфактуры проектов

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 53 / 60

Page 124: От БЭМ-методологии до Мануфактуры проектов

ПРОДУКТОВАЯ ИСТОРИЯ

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

• Блочный редактор текста для сайтов СМИ • Интерфейс управления сайтом • Быстрые сайты (три пакета) • Технологичные лендинги • Поддержка проектов

58 / 61

Page 125: От БЭМ-методологии до Мануфактуры проектов

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 59 / 61

Page 126: От БЭМ-методологии до Мануфактуры проектов

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn

@VOISCHEV

60 / 61

Page 127: От БЭМ-методологии до Мануфактуры проектов

THANKUwww.factory.mn

МАНУФАКТУРАИнтерактивное агентство

[email protected]@voischev

voischev

СПАСИБО

ВОИЩЕВИВАН

Как мы жили до БЭМа и к чему пришли с ним • Воищев Иван • Factory.mn 61 / 61