Антон Виноградов — БЭМ on rails

29
БЭМ on Rails Антон Виноградов Разработчик интерфейсов BEMup, YaC, Москва, 2 октября 2013 года

Upload: yandex

Post on 18-Nov-2014

901 views

Category:

Technology


3 download

DESCRIPTION

В докладе я расскажу о том, как пришел к использованию БЭМ, и почему Ruby on Rails просто создан для него. Также я объясню, как и зачем писать собственные инструменты для работы с БЭМ-методологией в рамках проектов на RoR. Мы обязательно заглянем в исходники, поговорим о планах и разберем пару примеров. Я покажу генерацию статики, зависимостей — и как pipeline помогает в этом нелегком деле. Также расскажу об интеграции RoR-проектов, сделанных в БЭМ-методологии, с проектами на других технологиях, использующих bem-tools и другие инструменты Яндекса.

TRANSCRIPT

Page 1: Антон Виноградов — БЭМ on Rails

БЭМ on Rails

Антон ВиноградовРазработчик интерфейсов

BEMup, YaC, Москва, 2 октября 2013 года

Page 2: Антон Виноградов — БЭМ on Rails

Путь к БЭМ

● много проектов

● мало времени

● нехватка ресурсов

● зоопарк технологий

● DRY

● совесть

2

RIGHTWAY

Page 3: Антон Виноградов — БЭМ on Rails

В начале было так

YII WP

И все были счастливы. Но ...3

Page 4: Антон Виноградов — БЭМ on Rails

Некоторое время спустя

YII

WP

NODE

Rails

RailsRails

Rails

Rails

Rails Rails

Rails

Rails

Rails

Rails

NODE

NODE

NODE

Аааа-ааа-аа-а!!!

Rails

4

Page 5: Антон Виноградов — БЭМ on Rails

We need a superhero!

БЭМRails

Rails

RailsRails

Rails Rails

Rails

Rails

Rails

Rails

NODENODE

5

Page 6: Антон Виноградов — БЭМ on Rails

Адаптация: Rails

6

Page 7: Антон Виноградов — БЭМ on Rails

bem-tools + V8Минусы:

- костыли для рендеринга- танцы с assets pipeline- это сбоку- пока еще сыро и как-то боязно- не ruby way

Плюсы:- отличный инструмент- постоянно растущее сообщество

7

Page 8: Антон Виноградов — БЭМ on Rails

Свое решение

Плюсы:- привычный шаблонизатор- сборка статитики остается на pipeline- часть проекта (интеграция с Rails)- рубисты тоже в теме- 5 секунд на подключение к проекту

Минусы:- работает не все- смахивает на велосипед

8

Page 9: Антон Виноградов — БЭМ on Rails

gem “bem-on-rails”

9

Page 10: Антон Виноградов — БЭМ on Rails

Как работает

Кастомизируется все (легко!): префиксы, файловая структура, технологии, оптимизаторы и еще куча всего.

10

Page 11: Антон Виноградов — БЭМ on Rails

Работа с сущностями

11

Page 12: Антон Виноградов — БЭМ on Rails

ПримерСоздадим блок для кнопки и элемент для текста внутри.

12

Page 13: Антон Виноградов — БЭМ on Rails

Другая файловая структура

13

Получаем некую структуру блока. Элементы и модификаторы находятся в своих директориях.

Page 14: Антон Виноградов — БЭМ on Rails

Описание сущностейМожно описывать шаблоны для сущностей в различных технологиях. И использовать через привычный параметр -Т.

14

Page 15: Антон Виноградов — БЭМ on Rails

Блоки внутри блоковСоздадим еще два блока: input и search.

15

Page 16: Антон Виноградов — БЭМ on Rails

Профит

16

Page 17: Антон Виноградов — БЭМ on Rails

Модификаторы и миксы

17

Page 18: Антон Виноградов — БЭМ on Rails

F5

18

Page 19: Антон Виноградов — БЭМ on Rails

Статус: В работе

19

Page 20: Антон Виноградов — БЭМ on Rails

Сейчас работает

● Миксы

● Моды

● Кастомные классы и атрибуты

● Теги

● Уровни переопределения

● Работа с сущностями на файловой системе

20

Page 21: Антон Виноградов — БЭМ on Rails

Coming soon

● i-bem.js в html

● deps.js

● Доопределение шаблонов на уровнях

● Отказ от Thor

21

Page 22: Антон Виноградов — БЭМ on Rails

Статика: Pipeline

22

Page 23: Антон Виноградов — БЭМ on Rails

CSS

Стандартные директивы Sprockets.Используйте applications файлы как конфиги.

23

Page 24: Антон Виноградов — БЭМ on Rails

JS

23

Page 25: Антон Виноградов — БЭМ on Rails

Уровни переопределения

25

Page 26: Антон Виноградов — БЭМ on Rails

Формируем библиотекуИспользуйте гит репозитории для разных уровней и библиотек блоков.

26

Page 27: Антон Виноградов — БЭМ on Rails

Эпилог

27

Page 28: Антон Виноградов — БЭМ on Rails

Rails - идеальны для БЭМ.

RubyGems

Slim

Bootstrap28

Page 29: Антон Виноградов — БЭМ on Rails

Антон ВиноградовРазработчик интерфейсов

[email protected]

awinogradov

awinogradov

winogradov_anton

verybigman

Stay BEMed!

bit.ly/bem-on-rails

bit.ly/bem-example

bit.ly/csso-rails

29