SlideShare a Scribd company logo
1 of 239
Download to read offline
Сайт с нуля на полном стеке
БЭМ-технологий
Жека Константинов, Дима Белицкий,
Слава Аристов
BEMup в Минске, 18 апреля 2014
3
Жека Константинов
3
sipayrt@yandex-team.ru
@sipayrt
github.com/sipayrt
разработчик интерфейсов в группе
разработки БЭМ в Яндексе
Дима Белицкий
4
dmtry@yandex-team.ru
@dabelitsky
github.com/dab
Разработчик интерфейсов в Яндексе
5
Слава Аристов
5
einstain@yandex-team.ru
@aristov7
github.com/aristov
разработчик интерфейсов в группе
разработки БЭМ в Яндексе
О чем поговорим?
6
Методология и написание CSS по БЭМ
О чем поговорим?
7
Методолгия и написание CSS по БЭМ
Шаблонизация и обмен данными
О чем поговорим?
8
Методолгия и написание CSS по БЭМ
Шаблонизация и обмен данными
JavaScript + BEM
О чем поговорим?
9
Методолгия и написание CSS по БЭМ
Шаблонизация и обмен данными
JavaScript + BEM
Все — на примере демо-проекта
Демо-проект
Да что это вообще такое?!
11
Агрегатор социальных сетей
По запросу будут выводиться последние новости
Будем использовать API твиттера и инстаграма
12
CSS + БЭМ
БЭМ — что это?
БЭМ — что это?
15
Блок — независимый интерфейсный компонент
БЭМ — что это?
16
Блок — независимый интерфейсный компонент
Элемент — составная часть блока
БЭМ — что это?
17
Блок — независимый интерфейсный компонент
Элемент — составная часть блока, не имеющая смысла вне
контекста этого блока
Модификатор — это свойство блока или элемента , задающее
изменения в их внешнем виде или поведении
БЭМ — что это?
18
Методология БЭМ на bem.info bit.ly/1hMHNB2
Доклад Вовы Гриненко про методологию БЭМ и БЭМ-платформу
bit.ly/1hMCKk5
Реиспользование кода
20
#menu li!
{!
font-size: 16px;!
}
Реиспользование кода
21
Реиспользование кода
<ul id="menu">!
!!!!<li>Поиск</li>!
!!!!<li>!
!!!!!!!!<a href="…">Карты</a>!
!!!!</li>!
</ul>
22
Реиспользование кода
<ul class="b-menu">!
!!!!<li class="item">Поиск</li>!
!!!!<li class="item">!
!!!!!!!!<a href="…" class="link">Карты</a>!
!!!!</li>!
</ul>
Каскады
24
.b-header .link!
{!
background: no-repeat url(b-logo.svg);!
}!
!
Каскады
25
Каскады
26
.b-header .link!
{!
background: no-repeat url(b-logo.svg);!
}!
!
.b-header .b-social .link!
{!
color: green;!
}!
Каскады
27
Каскады
28
/* Было */!
.b-header .link!
{!
background: url(…);!
}!
!
.b-header .b-social .link!
{!
color: #fff;!
}!
Каскады
29
/* Было */!
.b-header .link!
{!
background: url(…);!
}!
!
.b-header .b-social .link!
{!
color: #fff;!
}!
Каскады
/* Стало */!
.header__link!
{!
background: url(…);!
}!
!
.social__link!
{!
color: #fff;!
}
30
Проведем аналогию
31
<audio controls src="ne-bilo-razriva.wav"></audio>
Проведем аналогию
32
Проведем аналогию
33
Проведем аналогию
34
Проведем аналогию
35
Проведем аналогию
36
Модификаторы
37
.cat_theme_red!
{!
background: #dc9d42;!
}!
Модификаторы
38
.cat_theme_red!
{!
background: #dc9d42;!
}!
!
.cat_walking!
{!
animation-duration: 300s;!
}!
!
Модификаторы
39
.cat_theme_red!
{!
background: #dc9d42;!
}!
!
.cat_walking!
{!
animation-duration: 300s;!
}!
!
.cat__tail_direction_top!
{!
top: -200px;!
}!
Модификаторы
40
Модификаторы
Общепортальная
библиотека Лего
Общепортальная библиотека Лего
42
43
blocks/!
! ! button.css!
!button.js!
! ! input.css!
! ! input.js!
! ! input.html!
! ! logo.css!
! ! logo.js!
! ! logo.png
Файловая структура Лего
44
blocks/!
! header/!
! logo/!
! button/!
!! __icon/!
! ! ! ! ! button__icon.bemhtml!
! ! ! ! ! button__icon.css!
! ! ! ! ! button__icon.png!
_size/!
! ! button_size_s.css!
!! ! button_size_m.css!
!! button.css!
!! button.js
Файловая структура Лего
45
blocks/!
! header/!
! logo/!
! button/!
!! __icon/!
! ! ! ! ! button__icon.bemhtml!
! ! ! ! ! button__icon.css!
! ! ! ! ! button__icon.png!
_size/!
! ! button_size_s.css!
!! ! button_size_m.css!
!! button.css!
!! button.js
Файловая структура Лего
46
blocks/!
! header/!
! logo/!
! button/!
!! __icon/!
! ! ! ! ! button__icon.bemhtml!
! ! ! ! ! button__icon.css!
! ! ! ! ! button__icon.png!
_size/!
! ! button_size_s.css!
!! ! button_size_m.css!
!! button.css!
!! button.js
Файловая структура Лего
47
blocks/!
! header/!
! logo/!
! button/!
!! __icon/!
! ! ! ! ! button__icon.bemhtml!
! ! ! ! ! button__icon.css!
! ! ! ! ! button__icon.png!
_size/!
! ! button_size_s.css!
!! ! button_size_m.css!
!! button.css!
!! button.js
Файловая структура Лего
48
@import url(../../lego/button/button.css);!
@import url(../../lego/button/__icon/button__icon.css);!
@import url(../../lego/button/_size/button_size.css);!
!
Файловая структура Лего
49
@import url(../../lego/button/button.css);!
@import url(../../lego/button/_size/button_size.css);!
!
Файловая структура Лего
Файловая структура по БЭМ
50
Раздел на bem.info bit.ly/1eAsQBo
51
Уровни переопределения
52
Уровни переопределения
53
!
!
!
bem-components!
!!!!desktop.blocks/!
!!!!!!!!form/!
!!!!!!!!!!!!form.css
Уровни переопределения
54
!
!
bem-components/!
!!!!desktop.blocks/!
!!!!!!!!form/!
!!!!!!!!!!!!form.css!
sssr/!
!!!!desktop.blocks/!
!!!!!!!!form/!
!!!!!!!!!!!!form.css
Уровни переопределения
55
@import url(../../bem-components/desktop.blocks/form/form.css);!
@import url(../../desktop.blocks/form/form.css);!
!
Уровни переопределения
56
/* ../../bem-components/desktop.blocks/form/form.css begin */!
.form!
{!
background: #fff;!
}!
/* ../../bem-components/desktop.blocks/form/form.css end */!
!
/* ../../desktop.blocks/form/form.css begin */!
.form!
{!
background: иной;!
}!
/* ../../desktop.blocks/form/form.css end */!
Уровни переопределения
57
Платформы
58
/* common.blocks */!
.button!
{!
display: inline-block;!
}!
!
/* desktop.blocks */!
.button!
{!
background-color: green;!
}!
!
/* touch.blocks */!
.button!
{!
-webkit-touch-callout: none;!
}
Платформы
Вся история БЭМ
59
История БЭМ на bem.info bit.ly/1eAsQBo
Доклад Витали Харисова про историю БЭМ bit.ly/1m8ijzQ
Инструменты
61
@import url(../../common/block/global/_type/global_reset.css);!
@import url(../../common/block/l-head/l-head.css);!
@import url(../../common/block/header/__logo/header__logo.css);!
@import url(../../common/block/header/_type/header_type_yandex.css);!
@import url(../../common/block/header/__tabs/header__tabs.css);!
@import url(../../common/block/b-dropdown/b-dropdown.css);!
@import url(../../common/block/b-dropdown/__text/b-dropdown__text.css);!
@import url(../../common/block/b-link/b-link.css);!
@import url(../../common/block/dropdown/__arrow/dropdown__arrow.css);!
@import url(../../common/block/header/__search/header__search.css);!
@import url(../../common/block/b-search/b-search.css);!
@import url(../../common/block/b-search/__input/b-search__input.css);!
@import url(../../common/block/b-search/__sample/b-search__sample.css);!
@import url(../../common/block/b-search/__precise/b-search__precise.css);!
@import url(../../common/block/b-search/__button/b-search__button.css);!
@import url(../../common/block/header/__userinfo/header__userinfo.css);!
Инструменты
62
Инструменты
63
Инструменты
64
bem-tools/enb
borschik
CSSO + SVGO
BEMHTML
Инструменты
65
Инструменты на bem.info/tools
Доклад Вовы Гриненко про инструменты фронтендера
bit.ly/1qL91tg
Инструменты
Let’s code
CSS
BEMHTML + BEMTREE
Немного истории
Декларативная
шаблонизация
70
Декларативность и CSS
70
Декларативность и CSS
условие {тело шаблона}
70
Декларативность и CSS
условие {тело шаблона}
.menu__item { display: inline-block; }
XSLT
Преимущества XSLT
72
Преимущества XSLT
72
декларативная шаблонизация
Преимущества XSLT
72
декларативная шаблонизация
меньше копи-паста
Преимущества XSLT
72
декларативная шаблонизация
меньше копи-паста
легче командная работа
Подробнее про XSLT
73
bit.ly/vegedxslt
Проблемы XSLT
74
Проблемы XSLT
74
медленный
Проблемы XSLT
74
медленный
нет развития
Проблемы XSLT
74
медленный
нет развития
мало специалистов
Проблемы XSLT
74
медленный
нет развития
мало специалистов
не знает про БЭМ
BEMHTML
75
BEMHTML
75
работает на JavaScript
BEMHTML
75
работает на JavaScript
знает о предметной области BEM
BEMHTML
75
работает на JavaScript
знает о предметной области BEM
быстрый
JavaScript и BEMHTML
76
JavaScript и BEMHTML
76
специализированный язык (DSL), расширяющий JavaScript
JavaScript и BEMHTML
76
специализированный язык (DSL), расширяющий JavaScript
можно использовать любые JavaScript конструкции
JavaScript и BEMHTML
76
специализированный язык (DSL), расширяющий JavaScript
можно использовать любые JavaScript конструкции
компилируется в оптимизированный JavaScript
JavaScript и BEMHTML
76
специализированный язык (DSL), расширяющий JavaScript
можно использовать любые JavaScript конструкции
компилируется в оптимизированный JavaScript
исполняется на клиенте и сервере
Шаблонизация данных в bem-core
77
bit.ly/bemcoretpl
BEMHTML Руководство пользователя
78
BEMHTML Руководство пользователя
78
bit.ly/bemhtmlref
79
Декларативность
79
Декларативность
условие {тело шаблона}
79
Декларативность
условие {тело шаблона}
.menu__item { display: inline-block; }
79
Декларативность
условие {тело шаблона}
.menu__item { display: inline-block; }
block('menu').elem('item')(

tag()('li')

)
BEM-дерево → HTML
80
BEMJSON → BEMHTML → HTML
81
BEMJSON
82
входные данные
BEMHTML
83
декларативный шаблон
HTML
84
результат
85
Параллели
DOM дерево
!
инлайн стили
style = “display: inline-block;
background-color: silver;”
!
!
!
классы
.menu__item { 

display: inline-block; 

}
BEM дерево
!
теги в BEMJSON
{
block: 'menu'
elem: 'item',
tag: ‘li'
}
BEMHTML шаблоны
block('menu').elem('item')(
tag()('li')
)
Шаблон BEMHTML. Терминология
86
Шаблон BEMHTML. Терминология
86
Мода — шаг генерации фрагмента HTML элемента 

(тега, атрибута, класса и т.п.)
Шаблон BEMHTML. Терминология
86
Мода — шаг генерации фрагмента HTML элемента 

(тега, атрибута, класса и т.п.)
Предикат — набор условий
Шаблон BEMHTML. Терминология
86
Мода — шаг генерации фрагмента HTML элемента 

(тега, атрибута, класса и т.п.)
Предикат — набор условий
Подпредикаты — единичные (элементарные) условия
Шаблон BEMHTML. Терминология
86
Мода — шаг генерации фрагмента HTML элемента 

(тега, атрибута, класса и т.п.)
Предикат — набор условий
Подпредикаты — единичные (элементарные) условия
this.ctx — доступная структура данных
Шаблон BEMHTML. Моды
87
Шаблон BEMHTML. Моды
88
Шаблон BEMHTML. Моды
88
default — набор и порядок прохождения остальных мод
Шаблон BEMHTML. Моды
88
default — набор и порядок прохождения остальных мод
tag — генерация HTML тэга
Шаблон BEMHTML. Моды
88
default — набор и порядок прохождения остальных мод
tag — генерация HTML тэга
js — наличие js и параметры
Шаблон BEMHTML. Моды
88
default — набор и порядок прохождения остальных мод
tag — генерация HTML тэга
js — наличие js и параметры
bem — генерация классов БЭМ-сущности
Шаблон BEMHTML. Моды
88
default — набор и порядок прохождения остальных мод
tag — генерация HTML тэга
js — наличие js и параметры
bem — генерация классов БЭМ-сущности
cls — кастомные классы
Шаблон BEMHTML. Моды
88
default — набор и порядок прохождения остальных мод
tag — генерация HTML тэга
js — наличие js и параметры
bem — генерация классов БЭМ-сущности
cls — кастомные классы
mix — несколько БЭМ-блоков на одной DOM-ноде
Шаблон BEMHTML. Моды
88
default — набор и порядок прохождения остальных мод
tag — генерация HTML тэга
js — наличие js и параметры
bem — генерация классов БЭМ-сущности
cls — кастомные классы
mix — несколько БЭМ-блоков на одной DOM-ноде
jsAttrs — имя HTML-атрибута для параметров клиентского js
Шаблон BEMHTML. Моды
88
default — набор и порядок прохождения остальных мод
tag — генерация HTML тэга
js — наличие js и параметры
bem — генерация классов БЭМ-сущности
cls — кастомные классы
mix — несколько БЭМ-блоков на одной DOM-ноде
jsAttrs — имя HTML-атрибута для параметров клиентского js
attrs — позволяет задать имена и значения произвольных HTML-
атрибутов
Шаблон BEMHTML. Моды
88
default — набор и порядок прохождения остальных мод
tag — генерация HTML тэга
js — наличие js и параметры
bem — генерация классов БЭМ-сущности
cls — кастомные классы
mix — несколько БЭМ-блоков на одной DOM-ноде
jsAttrs — имя HTML-атрибута для параметров клиентского js
attrs — позволяет задать имена и значения произвольных HTML-
атрибутов
content — содержимое HTML-элемента
Шаблон BEMHTML
89
Шаблон BEMHTML
89
match(подпредикат1, подпредикат2, подпредикат3)(тело);
Шаблон BEMHTML
89
match(подпредикат1, подпредикат2, подпредикат3)(тело);
match(подпредикат 1).match(подпредикат 2)(тело1)

match(подпредикат 1).match(подпредикат 3)(тело2)
Шаблон BEMHTML
89
match(подпредикат1, подпредикат2, подпредикат3)(тело);
match(подпредикат 1).match(подпредикат 2)(тело1)

match(подпредикат 1).match(подпредикат 3)(тело2)
match(подпредикат1)(

match(подпредикат2)(тело1),

match(подпредикат3)(тело2)

)
Шаблон BEMHTML
90
Шаблон BEMHTML
90
match(подпредикат1, подпредикат2)(тело)
Шаблон BEMHTML
90
match(подпредикат1, подпредикат2)(тело)
match(this.block === 'link', 

this._mode === 'tag', 

this.ctx.url

)('a');
Шаблон BEMHTML
90
match(подпредикат1, подпредикат2)(тело)
match(this.block === 'link', 

this._mode === 'tag', 

this.ctx.url

)('a');
match(this.block === 'link')

.match(this._mode === 'tag')

.match(this.ctx.url)('a');
Представление БЭМ-сущностей
91
Представление БЭМ-сущностей
91
{ block: 'b-menu' }
Представление БЭМ-сущностей
91
{ block: 'b-menu' }
{ elem: 'item' }
Представление БЭМ-сущностей
91
{ block: 'b-menu' }
{ elem: 'item' }
{ 

block: 'b-link', 

mods: { pseudo: 'yes', color: 'green' }

}
Представление БЭМ-сущностей
91
{ block: 'b-menu' }
{ elem: 'item' }
{ 

block: 'b-link', 

mods: { pseudo: 'yes', color: 'green' }

}
{

elem: 'item',

elemMods: { selected: 'yes' }

}
Представление БЭМ-сущностей
91
{ block: 'b-menu' }
{ elem: 'item' }
{ 

block: 'b-link', 

mods: { pseudo: 'yes', color: 'green' }

}
{

elem: 'item',

elemMods: { selected: 'yes' }

}
{ 

block: 'b-link', 

mix: [ { block: 'b-serp-item', elem: 'link' } ]

}
Представление HTML
92
Представление HTML
92
{ block: 'my-block', tag: 'img' }
Представление HTML
92
{ block: 'my-block', tag: 'img' }
{ block: 'my-block', tag: 'img', attrs: { src: ‘…', alt: '' }}
Представление HTML
92
{ block: 'my-block', tag: 'img' }
{ block: 'my-block', tag: 'img', attrs: { src: ‘…', alt: '' }}
{ block: 'my-block', cls: 'additional-class' }
Представление HTML
92
{ block: 'my-block', tag: 'img' }
{ block: 'my-block', tag: 'img', attrs: { src: ‘…', alt: '' }}
{ block: 'my-block', cls: 'additional-class' }
{ block: ‘page', tag: ‘html', bem: false }
Представление HTML
92
{ block: 'my-block', tag: 'img' }
{ block: 'my-block', tag: 'img', attrs: { src: ‘…', alt: '' }}
{ block: 'my-block', cls: 'additional-class' }
{ block: ‘page', tag: ‘html', bem: false }
{ block: ‘my-block', js: true }
Порядок выполнения шаблонов
93
предикат { тело шаблона }
предикат { тело шаблона }
предикат { тело шаблона }
Базовые шаблоны
BEMHTML Руководство пользователя
94
Это и многое другое на нашем сайте bit.ly/bemhtmlref
Let’s code
BEMHTML
Архитектура приложения
96
Посмотрим код сервера
Двухпроходная
шаблонизация
data → BEM-дерево → HTML
99
data → BEMJSON
100
Как это делали раньше
101
priv.js
102
чистый JavaScript
priv.js — чего хочется?
103
priv.js — чего хочется?
103
уровни переопределения
priv.js — чего хочется?
103
уровни переопределения
предметная область БЭМ
priv.js — чего хочется?
103
уровни переопределения
предметная область БЭМ
единый синтаксис с BEMHTML
BEMTREE
104
BEMTREE
104
декларативность
BEMTREE
104
декларативность
уровни переопределения
BEMTREE
104
декларативность
уровни переопределения
знает о предметной области БЭМ
BEMTREE
104
декларативность
уровни переопределения
знает о предметной области БЭМ
единый синтаксис c BEMHTML
Двухпроходная шаблонизация
105
Отличия BEMHTML и BEMTREE
106
Отличия BEMHTML и BEMTREE
106
количество доступных стандартных мод
Отличия BEMHTML и BEMTREE
106
количество доступных стандартных мод
BEMTREE — default, content
Отличия BEMHTML и BEMTREE
106
количество доступных стандартных мод
BEMTREE — default, content
несколько полей контекста, специфичных для каждого
BEMTREE
107
BEM дерево
BEMTREE Руководство пользователя
108
на нашем сайте bit.ly/bemtree
Let’s code
BEMTREE
JavaScript + БЭМ
Библиотеки
111
Библиотеки
bem-core
github.com/bem/bem-core
!
bem-components
github.com/bem/bem-components
112
Модульная система
ym
github.com/ymaps/modules
113
Модульная система
BEM
BEMHTML
$ (jQuery)
114
Модульная система
BEM
BEMHTML
$ (jQuery)
$.inherit
$.observable
$.identify
$.debounce
…
115
Модульная система
BEM
BEMHTML
$ (jQuery)
$.inherit
$.observable
$.identify
$.debounce
…
116
modules
117
Модульная система
118
modules.define('i-bem', ['inherit'], function(provide, inherit) {
var BEM = inherit(/* … */)
provide(BEM)
})
Модульная система
119
modules.require(['i-bem', 'jquery'], function(BEM, $) {
/* код, использующий модули i-bem и jquery */
})
Модульная система
i-bem.js
Что такое i-bem.js?
121
Что такое i-bem.js
122
Блок, помогающий делать другие блоки
Что такое i-bem.js
123
Блок, помогающий делать другие блоки
Реализация блока i-bem в технологии JavaScript
Что такое i-bem.js
124
Блок, помогающий делать другие блоки
Реализация блока i-bem в технологии JavaScript
jQuery для нормализации API браузера
Что дает i-bem.js?
125
Что дает i-bem.js
126
Работа с предметной областью БЭМ
Что дает i-bem.js
127
Работа с предметной областью БЭМ
Декларативный подход
Что дает i-bem.js
128
Работа с предметной областью БЭМ
Декларативный подход
Возможность доопределения блоков
129
Где находится i-bem.js?
Где находится i-bem.js
bem-core/!
! ! ! common.blocks/!
! ! ! ! ! ! i-bem/!
! ! ! ! ! ! ! ! ! i-bem.vanilla.js!
! ! ! ! ! ! ! ! ! __dom/!
! ! ! ! ! ! ! ! ! ! ! ! i-bem__dom.js
130
Где находится i-bem.js
bem-core/!
! ! ! common.blocks/!
! ! ! ! ! ! i-bem/!
! ! ! ! ! ! ! ! ! i-bem.vanilla.js!
! ! ! ! ! ! ! ! ! __dom/!
! ! ! ! ! ! ! ! ! ! ! ! i-bem__dom.js
131
Где находится i-bem.js
bem-core/!
! ! ! common.blocks/!
! ! ! ! ! ! i-bem/!
! ! ! ! ! ! ! ! ! i-bem.vanilla.js!
! ! ! ! ! ! ! ! ! __dom/!
! ! ! ! ! ! ! ! ! ! ! ! i-bem__dom.js
132
Блоки с JS-представлением
134
{!
!!!!block: 'form'!
}
Блоки с js-представлением
135
{!
!!!!block: 'form',!
!!!!js: true!
}
Блоки с js-представлением
136
{!
!!!!block: 'form',!
!!!!js: { p1: 'v1', p2: 'v2', … }!
}
Блоки с js-представлением
137
<div class="form i-bem" !
!!!! data-bem="{ form: {} }"></div>
Блоки с js-представлением
138
<div class="form i-bem" !
!!!! data-bem="{ form: {} }"></div>
Блоки с js-представлением
139
<div class="form i-bem" !
!!!! data-bem="{ form: {} }"></div>
Блоки с js-представлением
140
<div class="form i-bem" !
!!!! data-bem="{ !
!!!!!!!form: {!
!!!!!!!!!!p1: 'v1',!
!!!!!!!!!!p2: 'v2',!
!!!!!!!!!!…!
!!!!!!!} !
!!!!!}"></div>
Блоки с js-представлением
Декларация БЭМ-сущностей
142
BEMDOM.decl('form', {!
/* методы экземпляра блока */
}, {!
/* методы класса */
});
Декларация блока
143
BEMDOM.decl({!
block: 'form', !
modName: 'type',!
modVal: 'dialog'!
}, {!
/* методы экземпляра блока */
}, {!
/* методы класса */
});
Декларация модификатора блока
144
BEMDOM.decl({!
block: 'form', !
elem: 'control'!
}, {!
/* методы экземпляра блока */
}, {!
/* методы класса */
});
Декларация элемента
145
BEMDOM.decl({!
block: 'form', !
elem: 'control',!
modName: 'type', !
modVal: 'input'!
}, {!
/* методы экземпляра блока */
}, {!
/* методы класса */
});
Декларация модификатора элемента
146
BEMDOM.decl('form', {!
onSetMod: {!
!!!! disabled: function(modName, modVal) {!
!
/* как реагировать на установку модификатора */
!
!!!! }!
!!!!}!
});
Реакция на установку модификатора
147
BEMDOM.decl({!
block: 'dialog', !
baseBlock: 'form'!
}, {!
/* методы экземпляра блока */
}, {!
/* методы класса */
});
Наследование
148
149
BEMDOM.decl('form', {
myMethod: function() {
// экземпляр
this
// ссылка на класс
this.__self
// статический метод класса
this.__self.myStaticMethod()
// super-call
this.__base()
}
});
150
BEMDOM.decl('form', { /* … */ }, {
myStaticMethod: function() {
// класс
this
// super-call
this.__base()
}
});
Набор хелперов
Набор хелперов
152
Поиск элементов и других блоков
Набор хелперов
153
Поиск элементов и других блоков
Работа с модификаторами
Набор хелперов
154
Поиск элементов и других блоков
Работа с модификаторами
Работа с событиями
Набор хелперов
155
Поиск элементов и других блоков
Работа с модификаторами
Работа с событиями
Перестроение DOM-дерева
156
// селекторы блоков
this.findBlockInside('button')
this.findBlockOutside('page')
this.findBlockOn('dialog')
157
// селекторы блоков
this.findBlockInside('button')
this.findBlockOutside('page')
this.findBlockOn('dialog')
!
// селекторы элементов
this.findElem('control')
this.elem('control')
158
// селекторы блоков
this.findBlockInside('button')
this.findBlockOutside('page')
this.findBlockOn('dialog')
!
// селекторы элементов
this.findElem('control')
this.elem('control')
!
// работа с модификаторами
this.setMod('status', 'loading')
this.hasMod('status', 'loading')
this.getMod('status')
this.delMod('status')
Работа с событиями
159
DOM-события
Работа с событиями
160
DOM-события
BEM-события
Работа с событиями
161
DOM-события
BEM-события
Каналы
Работа с событиями
162
DOM-события
BEM-события
Каналы
163
// DOM-события
this.bindTo('submit', function() { /*…*/ })
this.unbindFrom('submit')
Работа с событиями
164
// DOM-события
this.bindTo('submit', function() { /*…*/ })
this.unbindFrom('submit')
!
// BEM-события
this.on('update', function() { /*…*/ })
this.un('update', function() { /*…*/ })
this.emit('update')
Работа с событиями
Инициализация
166
<div class="menu i-bem" !
!!!! data-bem="{ 'menu': {} }"></div>
Инициализация
167
<div class="menu i-bem menu_js_inited" !
!!!! data-bem="{ 'menu': {} }"></div>
Инициализация
168
<div class="menu i-bem menu_js_inited" !
!!!! data-bem="{ 'menu': {} }"></div>
Инициализация
169
BEMDOM.decl('menu', {!
onSetMod: {!
!!!! js: {!
inited: function() {!
/* конструктор блока */
}!
!!!! }!
!!!!}!
});
Инициализация
И много чего ещё!
170
И много чего ещё!
171
Блоки без DOM-представления
И много чего ещё!
172
Блоки без DOM-представления
Отложенная инициализация
И много чего ещё!
173
Блоки без DOM-представления
Отложенная инициализация
Делегирование событий
И много чего ещё!
174
Блоки без DOM-представления
Отложенная инициализация
Делегирование событий
Инстансы элементов
Let’s code!
JavaScript
176
Итого
177
собрали агрегатор ^_^ про БЭМ из твиттера и инстаграма
заиспользовали полный БЭМ-стек, а именно
project-stub с bem-core и bem-components на сборке bem-tools
внутри работают технологии i-bem.js, BEMHTML, BEMTREE
178
info@bem.info
@bem_ru @bem_en #b_
clubs.ya.ru/bem
БЭМ!
Блок__Элемент_Модификатор
groups/bem.info
bem
Нам очень важно ваше мнение
179
Оставьте свой отзыв — bit.ly/bemup-minsk-feedback
180
Жека Константинов
Дима Белицкий
Слава Аристов
sipayrt@yandex-team.ru
dmtry@yandex-team.ru
einstain@yandex-team.ru clubs.ya.ru/bem
twitter.com/bem_ru
facebook.com/groups/bem.info
bem.info

More Related Content

What's hot

Denis Bugarchev
Denis BugarchevDenis Bugarchev
Denis Bugarchevyaevents
 
Доклад Юрия Насретдинова на РИТ++ 2013. "Система перевода в Badoo".
Доклад Юрия Насретдинова на РИТ++ 2013. "Система перевода в Badoo".Доклад Юрия Насретдинова на РИТ++ 2013. "Система перевода в Badoo".
Доклад Юрия Насретдинова на РИТ++ 2013. "Система перевода в Badoo".Badoo Development
 
BEM for corporate sites — failover frontend
BEM for corporate sites — failover frontendBEM for corporate sites — failover frontend
BEM for corporate sites — failover frontendAlex Yaroshevich
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без болиAnton Piskunov
 
bem-components — от методологии до full stack платформы
bem-components — от методологии до full stack платформыbem-components — от методологии до full stack платформы
bem-components — от методологии до full stack платформыYandex
 
Построение внутренней ссылочной структуры
Построение внутренней ссылочной структуры Построение внутренней ссылочной структуры
Построение внутренней ссылочной структуры Alexey Kostin
 
Вёрстка по методологии БЭМ
Вёрстка по методологии БЭМВёрстка по методологии БЭМ
Вёрстка по методологии БЭМversusbassz
 
Contributing to WordPress, WordCamp Russia 2013
Contributing to WordPress, WordCamp Russia 2013Contributing to WordPress, WordCamp Russia 2013
Contributing to WordPress, WordCamp Russia 2013Sergey Biryukov
 
Основы языка HTML
Основы языка HTMLОсновы языка HTML
Основы языка HTMLDenis Latushkin
 
Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем — Евгений Конс...
Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем — Евгений Конс...Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем — Евгений Конс...
Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем — Евгений Конс...Yandex
 
практическое использование модуля Panels богуцкий виктор
практическое использование модуля Panels богуцкий викторпрактическое использование модуля Panels богуцкий виктор
практическое использование модуля Panels богуцкий викторdrupalconf
 
Документирование блоков. Раскрываем все плюсы
Документирование блоков. Раскрываем все плюсыДокументирование блоков. Раскрываем все плюсы
Документирование блоков. Раскрываем все плюсыYandex
 
WordPress.org Under the Hood, WordCamp Moscow 2017
WordPress.org Under the Hood, WordCamp Moscow 2017WordPress.org Under the Hood, WordCamp Moscow 2017
WordPress.org Under the Hood, WordCamp Moscow 2017Sergey Biryukov
 
JSCS: Разработка архитектуры OpenSource-проектов
JSCS: Разработка архитектуры OpenSource-проектовJSCS: Разработка архитектуры OpenSource-проектов
JSCS: Разработка архитектуры OpenSource-проектовMarat Dulin
 
Библиотека bem-components
Библиотека bem-componentsБиблиотека bem-components
Библиотека bem-componentsYandex
 

What's hot (16)

Denis Bugarchev
Denis BugarchevDenis Bugarchev
Denis Bugarchev
 
Доклад Юрия Насретдинова на РИТ++ 2013. "Система перевода в Badoo".
Доклад Юрия Насретдинова на РИТ++ 2013. "Система перевода в Badoo".Доклад Юрия Насретдинова на РИТ++ 2013. "Система перевода в Badoo".
Доклад Юрия Насретдинова на РИТ++ 2013. "Система перевода в Badoo".
 
BEM for corporate sites — failover frontend
BEM for corporate sites — failover frontendBEM for corporate sites — failover frontend
BEM for corporate sites — failover frontend
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без боли
 
bem-components — от методологии до full stack платформы
bem-components — от методологии до full stack платформыbem-components — от методологии до full stack платформы
bem-components — от методологии до full stack платформы
 
Построение внутренней ссылочной структуры
Построение внутренней ссылочной структуры Построение внутренней ссылочной структуры
Построение внутренней ссылочной структуры
 
Вёрстка по методологии БЭМ
Вёрстка по методологии БЭМВёрстка по методологии БЭМ
Вёрстка по методологии БЭМ
 
Contributing to WordPress, WordCamp Russia 2013
Contributing to WordPress, WordCamp Russia 2013Contributing to WordPress, WordCamp Russia 2013
Contributing to WordPress, WordCamp Russia 2013
 
Основы языка HTML
Основы языка HTMLОсновы языка HTML
Основы языка HTML
 
Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем — Евгений Конс...
Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем — Евгений Конс...Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем — Евгений Конс...
Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем — Евгений Конс...
 
практическое использование модуля Panels богуцкий виктор
практическое использование модуля Panels богуцкий викторпрактическое использование модуля Panels богуцкий виктор
практическое использование модуля Panels богуцкий виктор
 
виртуальная выставка
виртуальная выставкавиртуальная выставка
виртуальная выставка
 
Документирование блоков. Раскрываем все плюсы
Документирование блоков. Раскрываем все плюсыДокументирование блоков. Раскрываем все плюсы
Документирование блоков. Раскрываем все плюсы
 
WordPress.org Under the Hood, WordCamp Moscow 2017
WordPress.org Under the Hood, WordCamp Moscow 2017WordPress.org Under the Hood, WordCamp Moscow 2017
WordPress.org Under the Hood, WordCamp Moscow 2017
 
JSCS: Разработка архитектуры OpenSource-проектов
JSCS: Разработка архитектуры OpenSource-проектовJSCS: Разработка архитектуры OpenSource-проектов
JSCS: Разработка архитектуры OpenSource-проектов
 
Библиотека bem-components
Библиотека bem-componentsБиблиотека bem-components
Библиотека bem-components
 

Similar to Жека Константинов, Дима Белицкий, Слава Аристов — Мастер-класс: разрабатываем сайт с нуля на полном стеке БЭМ-технологий

БЭМ в дикой природе
БЭМ в дикой природеБЭМ в дикой природе
БЭМ в дикой природеIhor Zenich
 
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"Yandex
 
BEM на корпоративном веб-ресурсе — отказоустойчивость фронтенда
BEM на корпоративном веб-ресурсе — отказоустойчивость фронтендаBEM на корпоративном веб-ресурсе — отказоустойчивость фронтенда
BEM на корпоративном веб-ресурсе — отказоустойчивость фронтендаDALEE digital agency
 
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"Yandex
 
Евгений Филатов "Одностраничные приложения на БЭМ и Node.js"
Евгений Филатов "Одностраничные приложения на БЭМ и Node.js"Евгений Филатов "Одностраничные приложения на БЭМ и Node.js"
Евгений Филатов "Одностраничные приложения на БЭМ и Node.js"Yandex
 
Как устроена система перевода в Badoo / Юрий Насретдинов (Badoo)
Как устроена система перевода в Badoo / Юрий Насретдинов (Badoo)Как устроена система перевода в Badoo / Юрий Насретдинов (Badoo)
Как устроена система перевода в Badoo / Юрий Насретдинов (Badoo)Ontico
 
Елена Джетпыспаева — Открытие. Новости и планы БЭМ-сообщества
Елена Джетпыспаева — Открытие. Новости и планы БЭМ-сообществаЕлена Джетпыспаева — Открытие. Новости и планы БЭМ-сообщества
Елена Джетпыспаева — Открытие. Новости и планы БЭМ-сообществаYandex
 
Отполифиль свой CSS - MinskCSS 2
Отполифиль свой CSS - MinskCSS 2Отполифиль свой CSS - MinskCSS 2
Отполифиль свой CSS - MinskCSS 2Vasiliy Vanchuck
 
Документирование блоков. Раскрываем все плюсы — Инна Белая, Яндекс
Документирование блоков. Раскрываем все плюсы — Инна Белая, ЯндексДокументирование блоков. Раскрываем все плюсы — Инна Белая, Яндекс
Документирование блоков. Раскрываем все плюсы — Инна Белая, ЯндексYandex
 
Павел Шут — БЭМ в lean startup'e
Павел Шут — БЭМ в lean startup'eПавел Шут — БЭМ в lean startup'e
Павел Шут — БЭМ в lean startup'eYandex
 
Антон Виноградов, Альфа-Банк — Инструменты БЭМ-разработчика
Антон Виноградов, Альфа-Банк — Инструменты БЭМ-разработчикаАнтон Виноградов, Альфа-Банк — Инструменты БЭМ-разработчика
Антон Виноградов, Альфа-Банк — Инструменты БЭМ-разработчикаYandex
 
Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний
Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компанийАлександр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний
Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компанийYandex
 
CSS-менеджмент в 2016
CSS-менеджмент в 2016CSS-менеджмент в 2016
CSS-менеджмент в 2016Timophy Chaptykov
 
D2D Pizza JS Тимофей Чаптыков "CSS-менеджмент в 2016"
D2D Pizza JS Тимофей Чаптыков "CSS-менеджмент в 2016"D2D Pizza JS Тимофей Чаптыков "CSS-менеджмент в 2016"
D2D Pizza JS Тимофей Чаптыков "CSS-менеджмент в 2016"Dev2Dev
 
Презентация: 1С-Bitrix — как начать
Презентация: 1С-Bitrix — как начатьПрезентация: 1С-Bitrix — как начать
Презентация: 1С-Bitrix — как начатьDmitriy Polisadov
 
Вадим Макишвили "Вёрстка в IntelliJIDEA"
Вадим Макишвили "Вёрстка в IntelliJIDEA"Вадим Макишвили "Вёрстка в IntelliJIDEA"
Вадим Макишвили "Вёрстка в IntelliJIDEA"Yandex
 
WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического...
WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического...WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического...
WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического...GeeksLab Odessa
 
Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верст...
Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верст...Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верст...
Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верст...Yandex
 
Прототипирование с БЭМ — Антон Виноградов, Альфа-Лаб
Прототипирование с БЭМ — Антон Виноградов, Альфа-ЛабПрототипирование с БЭМ — Антон Виноградов, Альфа-Лаб
Прототипирование с БЭМ — Антон Виноградов, Альфа-ЛабYandex
 

Similar to Жека Константинов, Дима Белицкий, Слава Аристов — Мастер-класс: разрабатываем сайт с нуля на полном стеке БЭМ-технологий (20)

БЭМ в дикой природе
БЭМ в дикой природеБЭМ в дикой природе
БЭМ в дикой природе
 
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"
 
BEM на корпоративном веб-ресурсе — отказоустойчивость фронтенда
BEM на корпоративном веб-ресурсе — отказоустойчивость фронтендаBEM на корпоративном веб-ресурсе — отказоустойчивость фронтенда
BEM на корпоративном веб-ресурсе — отказоустойчивость фронтенда
 
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"
 
Евгений Филатов "Одностраничные приложения на БЭМ и Node.js"
Евгений Филатов "Одностраничные приложения на БЭМ и Node.js"Евгений Филатов "Одностраничные приложения на БЭМ и Node.js"
Евгений Филатов "Одностраничные приложения на БЭМ и Node.js"
 
Как устроена система перевода в Badoo / Юрий Насретдинов (Badoo)
Как устроена система перевода в Badoo / Юрий Насретдинов (Badoo)Как устроена система перевода в Badoo / Юрий Насретдинов (Badoo)
Как устроена система перевода в Badoo / Юрий Насретдинов (Badoo)
 
News and plan of BEM community
News and plan of BEM communityNews and plan of BEM community
News and plan of BEM community
 
Елена Джетпыспаева — Открытие. Новости и планы БЭМ-сообщества
Елена Джетпыспаева — Открытие. Новости и планы БЭМ-сообществаЕлена Джетпыспаева — Открытие. Новости и планы БЭМ-сообщества
Елена Джетпыспаева — Открытие. Новости и планы БЭМ-сообщества
 
Отполифиль свой CSS - MinskCSS 2
Отполифиль свой CSS - MinskCSS 2Отполифиль свой CSS - MinskCSS 2
Отполифиль свой CSS - MinskCSS 2
 
Документирование блоков. Раскрываем все плюсы — Инна Белая, Яндекс
Документирование блоков. Раскрываем все плюсы — Инна Белая, ЯндексДокументирование блоков. Раскрываем все плюсы — Инна Белая, Яндекс
Документирование блоков. Раскрываем все плюсы — Инна Белая, Яндекс
 
Павел Шут — БЭМ в lean startup'e
Павел Шут — БЭМ в lean startup'eПавел Шут — БЭМ в lean startup'e
Павел Шут — БЭМ в lean startup'e
 
Антон Виноградов, Альфа-Банк — Инструменты БЭМ-разработчика
Антон Виноградов, Альфа-Банк — Инструменты БЭМ-разработчикаАнтон Виноградов, Альфа-Банк — Инструменты БЭМ-разработчика
Антон Виноградов, Альфа-Банк — Инструменты БЭМ-разработчика
 
Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний
Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компанийАлександр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний
Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний
 
CSS-менеджмент в 2016
CSS-менеджмент в 2016CSS-менеджмент в 2016
CSS-менеджмент в 2016
 
D2D Pizza JS Тимофей Чаптыков "CSS-менеджмент в 2016"
D2D Pizza JS Тимофей Чаптыков "CSS-менеджмент в 2016"D2D Pizza JS Тимофей Чаптыков "CSS-менеджмент в 2016"
D2D Pizza JS Тимофей Чаптыков "CSS-менеджмент в 2016"
 
Презентация: 1С-Bitrix — как начать
Презентация: 1С-Bitrix — как начатьПрезентация: 1С-Bitrix — как начать
Презентация: 1С-Bitrix — как начать
 
Вадим Макишвили "Вёрстка в IntelliJIDEA"
Вадим Макишвили "Вёрстка в IntelliJIDEA"Вадим Макишвили "Вёрстка в IntelliJIDEA"
Вадим Макишвили "Вёрстка в IntelliJIDEA"
 
WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического...
WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического...WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического...
WebCamp: Developer Day: Разработка фронтенда: от кузницы до металлургического...
 
Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верст...
Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верст...Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верст...
Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верст...
 
Прототипирование с БЭМ — Антон Виноградов, Альфа-Лаб
Прототипирование с БЭМ — Антон Виноградов, Альфа-ЛабПрототипирование с БЭМ — Антон Виноградов, Альфа-Лаб
Прототипирование с БЭМ — Антон Виноградов, Альфа-Лаб
 

More from Yandex

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksYandex
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Yandex
 

More from Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

Recently uploaded (9)

СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 

Жека Константинов, Дима Белицкий, Слава Аристов — Мастер-класс: разрабатываем сайт с нуля на полном стеке БЭМ-технологий