Talk (in Russian) for Yet another Conference 2013, October 2d, Moscow
Abstract: More than 10 years Yandex launches various Internet services such as Maps, Mail, Disk, Music, Auto. During this long period of time we have got a lot of experience that could be useful for other web developers.
In this talk we will share several stories about several services of Yandex and our common library of blocks. In the context of search services we will talk about full stack of BEM technologies, server JavaScript and automatised web development.
We will describe an experience of Yandex.Direct which has a non-stop frontend development and refactoring workflow. We also tell about MVC-pattern (bem-mvc) realisation and converting data in comfortable data view format.
Using Yandex.Maps and its API example we will show how you can adapt BEM flexibly taking into consideration special project's needs.
We also talk about open source and why we went there and what we have learned. Promise you, it will have a lot of interesting details.
Video (Russian) https://events.yandex.ru/lib/talks/1108/
6. yandex.ru/all — больше 40 сервисов
api.yandex.ru — больше 25 API
на самом деле 180 сервисов
более 250 разработчиков интерфейсов
3 страны
6 городов
кодовая база 001011000100100001111000110
6
43. Яндекс.Директ
43
Сервис для размещения поисковой
и тематической контекстной
рекламы.
Проект с 12-ти летней историей,
сложносочиненным интерфейсом,
большой кодовой базой.
53. Планирование
Для начала, для страниц
посчитали посещаемость
дали коэффициент важности
составили таблицу
Выбираем
смотрим важность
смотрим трудоемкость
количество общих блоков
53
67. bem-mvc – реализация MVC паттерна осуществляющего
провязку с DOM-ом в БЭМ-терминах
http://github.com/bem/bem-mvc
Подробнее на BEMup
67
68. Кроме того
68
Ввели обязательное code review
Синтаксический анализ (jshint, jscs)
Пишем json-схемы на данные json-schema.org
Валидируем данные по этим схемам
Исследуем скорость интерфейса
82. Обратная совместимость
API — зафиксированный набор интерфейсов
Вместо доопределений — параметры блока
Нет модификаторов
Отображение блока отделено от поведения
82
86. BT
Шаблонизатор для BTJSON.
Не поддерживает доопределение, переопределение.
Работает очень быстро за счет своей простоты.
github.com/enb-make/bt
86
89. YBlock
// i-bem
BEM.DOM.decl("button", { ... });
var button = BEM.DOM.init(
$(BEMHTML.apply({block: "button"}))
).bem("button");
// YBlock
var Button = inherit(YBlock, { ... });
var button = new Button();
89
90. YBlock
Ориентирован на проекты с упором на JS
Полное разграничение публичного и приватного API
Связан с BT
Чистое наследование, совместимое с различными библиотеками
90
91. Наши технологии
BTJSON — диалект BEMJSON
BT — шаблонизатор
YBlock — базовый визуальный блок
ENB — сборщик. Подробнее на BEMup.
91
101. А точнее?
bem.info БЭМ-методология bem-core БЭМ-технологии
bem-tools Москва bem-history СНГbem-mvc РИТ++ Киев bem-bl
Я.Субботники i-bem.js YaC Симферополь twitter Web Standards
Days Клуб БЭМ в Я.Ру borschik in English facebook по-русски
WebConf ЕвропаМинск bemhtml Санкт-Петербург
~30 докладов в год
100
104. 103
«Когда я спросил Харисова на Я.Субботнике в
2009 (я тогда в Яндексе не работал), почему они
бесплатно рассказывают и выкладывают
наработки, он ответил: „Когда делаешь что-то
долго и хорошо, со временем появляется желание
поделиться“»,
— из разговора с одним
неизвестным Лего-разработчиком
105. БЭМ — первый технологический
продукт Яндекса
104
109. Зачем нам опенсорс?
105
Закрытая разработка рано или поздно умирает
Нужна новая кровь
Хотим аутсорс, но сложно интегрировать код
110. Зачем нам опенсорс?
105
Закрытая разработка рано или поздно умирает
Нужна новая кровь
Хотим аутсорс, но сложно интегрировать код
Хотим расти, но сложно интегрировать людей
111. Зачем нам опенсорс?
105
Закрытая разработка рано или поздно умирает
Нужна новая кровь
Хотим аутсорс, но сложно интегрировать код
Хотим расти, но сложно интегрировать людей
Хотим делиться, потому что вместе веселей
115. Приоритезируй это!
Online vs. Offline
Внедрение vs. Распространение знания
Написание кода vs. Знание методологии
106
116. Приоритезируй это!
Online vs. Offline
Внедрение vs. Распространение знания
Написание кода vs. Знание методологии
Наше коммьюнити vs. Какие-то конференции
106
128. «Не бойтесь быть первопроходцами.
Худшее, что может случиться, — вы опозоритесь и все!»
— Дима Барановский, Adobe на YaC 2012
118
129. Stay BEMed & Приходи на BEMup!
119
15:00 Дмитрий Барановский — topcoat — открытый проект от Адобе для
быстрой и удобной разработки веб- приложений
15:30 Антон Виноградов — БЭМ on Rails
16:00 Марат Дулин — ENB — сборщик проектов на БЭМ
16:20 Сергей Татаринцев — bem-tools 1.0.0
16:40 Сергей Бережной — bem-core
17:20 Сергей Максимов — BEMTREE.XJST – генерируй дерево
17:40 Владимир Варанкин — Сервер-сайд в БЭМ- терминах (Node.js)
18:00 Сергей Пузанков — Новый Поиск по Блогам на bem- node
18:20 Сергей Максимов — bem-mvc, или как клеить моделей
18:40 Владимир Довыденко — БЭМ в ТКС
19:00 Антон Кузнецов — БЭМ в Битриксе
19:20 Александр Баумгертнер — Плюсы использования БЭМ для небольших
проектов и компаний