SlideShare une entreprise Scribd logo
1  sur  114
Télécharger pour lire hors ligne
разработчик интерфейсов
JavaScript
в терминах БЭМ
Владимир Варанкин
РИТ++, Москва, 22 апреля 2013 г.
3
github.com/bem/rit-2013
В докладе рассказывается о написании
клиентского JavaScript
В докладе рассказывается о написании
клиентского JavaScript
Любые совпадения с реальными событиями
специальны
БЭМ
bem.info
7
БЭМ и JavaScript
БЭМ и JavaScript
Организация кода в проекте
The basic of Backbone are quite easy to learn. But soon you find that there
are not enough opinions there to know how to best structure your code.
You will need to watch or read a few tutorials to learn
some best Backbone practices
10
A Comparison of Angular, Backbone,
CanJS and Ember
bit.ly/179Ojtc
Файловая структура
project/
blocks/
button/
checkbox/
input/
radiobox/
...
11
Файловая структура
project/
blocks/
button/
button.css
button.js
...
12
Файловая структура
project/
blocks/
button/
button.css
button.doc.md
button.js
button.spec.js
...
13
Файловая структура
project/
css/
app.css
list.css
item.css
js/
models/
app.js
list.js
item.js
views/
app.js
list.js
item.js
routes/
...
14
Файловая структура
project/
css/
app.css
list.css
item.css
js/
models/
app.js
list.js
item.js
views/
app.js
list.js
item.js
routes/
...
15
project/
blocks/
app/
app.model.js
app.view.js
app.router.js
list/
list.css
list.model.js
list.view.js
item/
item.css
item.model.js
...
Блок — это самодостаточный
компонент
приложения
16
БЭМ и JavaScript
i-bem.js
i-bem.js
• Кроссбраузерность (jQuery)
18
i-bem.js
• Кроссбраузерность (jQuery)
– селекторы
– события
– AJAX
– манипуляции с DOM
– ...
19
i-bem.js
• Кроссбраузерность (jQuery)
• Решение типичных задач создания веб-компонентов
20
i-bem.js
• Кроссбраузерность (jQuery)
• Решение типичных задач создания веб-компонентов
– связь HTML и JS
– инициализация приложения
– ...
21
i-bem.js
• Кроссбраузерность (jQuery)
• Решение типичных задач создания веб-компонентов
• JavaScript в БЭМ-терминах
22
i-bem.js
• Кроссбраузерность (jQuery)
• Решение типичных задач создания веб-компонентов
• JavaScript в БЭМ-терминах
– „блок, помогающий делать другие блоки“
23
i-bem
Помощник для создания
других блоков
bit.ly/12uO7Ub
24
БЭМ и JavaScript
Статичный HTML
и динамичный JavaScript
Императивный подход
26
Что делать?
Императивный подход
27
Императивный подход
<div id="app">
<a>Do something</a>
</div>
28
Императивный подход
$('#app')
.on('click', 'a', function() {
// logic...
})
29
Императивный подход
$('#app')
.on('click', 'a', function() {
$(this).fadeOut(
'normal',
function() { ... })
})
30
Как делать?
Декларативный подход
32
Декларативный подход
<script type="text/x-handlebars" data-template-name="app">
<div>
<a {{action "doLogic"}}>
Do something
</a>
</div>
</script>
33
Декларативный подход
<html ng-app>
<body>
<div ng-controller="AppCtrl">
<a ng-click="{{doLogic()}}">
Do something
</a>
</div>
</body>
</html>
34
HTML — скучный статичный
формат
35
HTML — скучный статичный
формат, но...
36
Индексируется поисковиками
HTML
37
Индексируется поисковиками
Работает «везде» ;-)
HTML
38
Индексируется поисковиками
Работает «везде»
Работает «всегда» ;-)
HTML
39
<div class="app i-bem">
<a class="app__controller">
Do something
</a>
</div>
Декларативный подход с i-bem.js
40
БЭМ и JavaScript
Декларация блока
Декларация блока
42
Декларация блока в HTML
<form class="search i-bem">
<input class="search__input"/>
<button class="search__button">Найти</button>
<div>
Например,
<a class="search__sample"/>который час?</a>
</div>
</form>
43
Декларация блока в JS
44
BEM.DOM.decl(
// блок,
// методы/свойства экземпляра блока,
// статические методы/свойства блока
)
Декларация блока в JS
45
BEM.DOM.decl(
'search',
// методы/свойства экземпляра блока,
// статические методы/свойства блока
)
Декларация блока в JS
46
BEM.DOM.decl(
'search',
{
method: function() { }
},
{
staticMethod: function() { }
}
)
Декларация блока в JS
47
BEM.DOM.decl('search', {
method: function() {
this ⟶ указатель на блок
this.domNode ⟶ jQuery-узел блока
this.__self ⟶ указатель на класс
this.__self.staticMethod() ⟶ вызов ст. метода
this.method() ⟶ вызов собственного метода
this.params ⟶ параметры блока
}
})
БЭМ и JavaScript
Инициализация
Инициализация
49
BEM.DOM.init()
Инициализация
50
$(function() {
BEM.DOM.init()
})
Инициализация всей страницы?
51
Инициализация
52
BEM.DOM.init([ctx])
53
54
55
Динамическая инициализация
56
$.get('http://...', function(list) {
BEM.DOM.update('.playlist', list)
})
Destruct
• Отписаться от событий
58
Destruct
• Отписаться от событий
• Очистить ссылки на объекты
59
Destruct
• Отписаться от событий
• Очистить ссылки на объекты
• Удалить HTML-код
60
Destruct
61
App.View = Backbone.View.extend({
teardown: function() {
// отписаться от событий в модели;
// вызвать `teardown()` для вложенных вьюх;
// очистить DOM...
}
})
Destruct
62
BEM.DOM.update(ctx, data)
Destruct
63
BEM.DOM.decl('player', {
destruct: function() {
// дополнительная очистка от мусора..
}
})
БЭМ и JavaScript
Ленивая инициализация блока
Ленивая инициализация
65
Ленивая инициализация
66
Ленивая инициализация
67
BEM.DOM.decl('search', {
...
}, {
live: true
})
Ленивая инициализация
68
BEM.DOM.decl('search', {
...
}, {
live: function() {
// условия инициализации
}
})
Ленивая инициализация
69
BEM.DOM.decl('search', {
...
}, {
live: function() {
this.liveInitOnEvent('click', fn)
}
})
БЭМ и JavaScript
Состояния инициализации
JavaScript отключен
JavaScript отключен
JavaScript включен,
но блок еще не инициализирован
JavaScript отключен
JavaScript включен,
но блок еще не инициализирован
JavaScript включен,
блок инициализирован
Состояния инициализации
74
<form class="search i-bem">
<!-- ... -->
</form>
Состояния инициализации
75
<form class="search search_js_inited i-bem">
<!-- ... -->
</form>
Состояния инициализации
76
<html class="ua_js_no">
<body>
<form class="search i-bem">
<!-- ... -->
</form>
</body>
</html>
Состояния инициализации
77
<html class="ua_js_yes">
<body>
<form class="search i-bem">
<!-- ... -->
</form>
</body>
</html>
Состояния инициализации
78
/* search.css */
.ua_js_no .search__sample {
display: none
}
.ua_js_yes .search__clean {
visibility: hidden;
}
.search_js_inited .search__clean {
visibility: visible;
}
БЭМ и JavaScript
Взаимодействие компонентов
Взаимодействие компонентов
80
<form class="search">
<div>
Например,
<a class="search-sample"/>который час?</a>
</div>
</form>
Взаимодействие компонентов
81
$('.search').find('.search-sample')
Взаимодействие компонентов
82
App.SearchView = Backbone.View.extend({
el: '.search',
events: {
'click .search-sample': doSmthg
}
})
Взаимодействие компонентов
83
App.SearchView = Backbone.View.extend({
el: '.search',
events: {
'click .search-sample': doSmthg
}
})
Взаимодействие компонентов
84
<form class="search i-bem">
<div>
Например,
<a class="search__sample"/>который час?</a>
</div>
</form>
Взаимодействие компонентов
85
BEM.DOM.decl('search', {
method: function() {
$('.search').find('.search__sample')
this.elem('sample')
}
})
Селекторы
86
// поиск блока внутри контекста
this.findBlockInside([elem], block)
// поиск снаружи контекста
this.findBlockOutside([elem], block)
// поиск на БЭМ-узле текущего блока
this.findBlockOn([elem], block)
// поиск элемента
this.findElem([ctx], elem)
// кеширующий поиск
this.elem(elem)
БЭМ и JavaScript
Расширение функциональности
Расширение функциональности
89
// lib/search.js
SearchView = Backbone.View.extend({
method: function() {
// ...
}
})
Расширение функциональности
90
// lib/search.js
SearchView = Backbone.View.extend({
method: function() { }
})
// search.js
AutoSearchView = SearchView.extend({
method: function() {
this.constructor.__super__.method.apply(this)
}
})
Расширение функциональности
91
// lib/search.js
SearchView = Ember.View.extend({
method: function() { }
})
// search.js
SearchView.reopenClass({
method: function() {
this._super()
}
})
Расширение функциональности
92
/* lib/search.css */
.search {
background: #fc0;
color: #000;
margin: 0;
}
Расширение функциональности
93
/* lib/search.css */
.search {
background-color: #fc0;
color: #000;
margin: 0;
}
/* search.css */
.search {
background: none;
margin-right: 50px;
}
Расширение функциональности
94
.search {
background: none;
margin: 0 50px 0 0;
}
.search {
background-color: #fc0;
color: #000;
margin: 0;
}
Расширение функциональности
95
// lib/search.js
BEM.DOM.decl('search', {
method: function() { }
})
Расширение функциональности
96
// lib/search.js
BEM.DOM.decl('search', {
method: function() { }
})
// search.js
BEM.DOM.decl('search', {
method: function() {
this.__base()
}
})
БЭМ и JavaScript
О чем еще можно поговорить?
О чем еще можно поговорить?
• Работа с модификаторами
98
О чем еще можно поговорить?
• Работа с модификаторами
• Работа с событиями
99
О чем еще можно поговорить?
• Работа с модификаторами
• Работа с событиями
• Наследование блоков
100
О чем еще можно поговорить?
• Работа с модификаторами
• Работа с событиями
• Наследование блоков
• Распределенные блоки
101
О чем еще можно поговорить?
• Работа с модификаторами
• Работа с событиями
• Наследование блоков
• Распределенные блоки
• Миксины
102
О чем еще можно поговорить?
• Работа с модификаторами
• Работа с событиями
• Наследование блоков
• Распределенные блоки
• Миксины
• Инструменты сборки
103
О чем еще можно поговорить?
• Работа с модификаторами
• Работа с событиями
• Наследование блоков
• Распределенные блоки
• Миксины
• Инструменты сборки
• ...
104
БЭМ и JavaScript
Настоящее и будущее?
github.com/bem/bem-bl
Настоящее
106
107 github.com/bem/bem-bl
Будущее
108
github.com/bem/bem-core
Заключение
Часть БЭМ-экосистемы
i-bem.js
110
Удобно писать сложный клиентский JS
i-bem.js
111
OpenSource
i-bem.js
112
@bem_tw
fb.com/groups/bem.info
github.com/bem
113
Разработчик интерфейсов
varankinv@yandex-team.ru
Владимир Варанкин
github.com/narqo
Спасибо

Contenu connexe

Tendances

Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем — Евгений Конс...
Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем — Евгений Конс...Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем — Евгений Конс...
Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем — Евгений Конс...Yandex
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноKrivoy Rog IT Community
 
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.Igor Shkulipa
 
Журнальная вёрстка в Django
Журнальная вёрстка в DjangoЖурнальная вёрстка в Django
Журнальная вёрстка в DjangoMoscowDjango
 
Компонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективноКомпонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективноRoman Dvornov
 
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evroneit-people
 
Как построить DOM
Как построить DOMКак построить DOM
Как построить DOMRoman Dvornov
 
Выжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим ГопейВыжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим ГопейEatDog
 
Пишем БЭМ правильно
Пишем БЭМ правильноПишем БЭМ правильно
Пишем БЭМ правильноIhor Zenich
 
Основы Java. 5. Databases
Основы Java. 5. DatabasesОсновы Java. 5. Databases
Основы Java. 5. DatabasesSergey Nemchinsky
 
Жизнь в изоляции
Жизнь в изоляцииЖизнь в изоляции
Жизнь в изоляцииRoman Dvornov
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.Igor Shkulipa
 
Быстро о быстром
Быстро о быстромБыстро о быстром
Быстро о быстромRoman Dvornov
 
Basis.js — почему я не бросил разрабатывать свой фреймворк / Роман Дворнов (О...
Basis.js — почему я не бросил разрабатывать свой фреймворк / Роман Дворнов (О...Basis.js — почему я не бросил разрабатывать свой фреймворк / Роман Дворнов (О...
Basis.js — почему я не бросил разрабатывать свой фреймворк / Роман Дворнов (О...Ontico
 
Selenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.euSelenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.euAndrei Solntsev
 
Javascript testing
Javascript testingJavascript testing
Javascript testingTCS bank
 
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)AvitoTech
 
Basis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA FrameworkBasis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA FrameworkMoscowJS
 

Tendances (20)

Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем — Евгений Конс...
Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем — Евгений Конс...Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем — Евгений Конс...
Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем — Евгений Конс...
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
 
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.
 
Журнальная вёрстка в Django
Журнальная вёрстка в DjangoЖурнальная вёрстка в Django
Журнальная вёрстка в Django
 
Компонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективноКомпонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективно
 
Лекция #7. Django ORM
Лекция #7. Django ORMЛекция #7. Django ORM
Лекция #7. Django ORM
 
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
 
Как построить DOM
Как построить DOMКак построить DOM
Как построить DOM
 
Выжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим ГопейВыжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим Гопей
 
Пишем БЭМ правильно
Пишем БЭМ правильноПишем БЭМ правильно
Пишем БЭМ правильно
 
Основы Java. 5. Databases
Основы Java. 5. DatabasesОсновы Java. 5. Databases
Основы Java. 5. Databases
 
Жизнь в изоляции
Жизнь в изоляцииЖизнь в изоляции
Жизнь в изоляции
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.
 
Быстро о быстром
Быстро о быстромБыстро о быстром
Быстро о быстром
 
Basis.js — почему я не бросил разрабатывать свой фреймворк / Роман Дворнов (О...
Basis.js — почему я не бросил разрабатывать свой фреймворк / Роман Дворнов (О...Basis.js — почему я не бросил разрабатывать свой фреймворк / Роман Дворнов (О...
Basis.js — почему я не бросил разрабатывать свой фреймворк / Роман Дворнов (О...
 
Selenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.euSelenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.eu
 
Javascript testing
Javascript testingJavascript testing
Javascript testing
 
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)
"Basis.js - Production Ready SPA Framework" Сергей Мелюков (Avito)
 
Basis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA FrameworkBasis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA Framework
 
Basis.js - Production Ready Framework
Basis.js - Production Ready FrameworkBasis.js - Production Ready Framework
Basis.js - Production Ready Framework
 

En vedette

Tao Of Badass Torrents
Tao Of Badass TorrentsTao Of Badass Torrents
Tao Of Badass Torrentsraynosostoc
 
Treści dotyczące odejścia Steve Jobsa ze stanowiska CEO Apple
Treści dotyczące odejścia Steve Jobsa ze stanowiska CEO AppleTreści dotyczące odejścia Steve Jobsa ze stanowiska CEO Apple
Treści dotyczące odejścia Steve Jobsa ze stanowiska CEO AppleBrand24
 
Weekendowy pojedynek filmowy vol 13
Weekendowy pojedynek filmowy vol 13Weekendowy pojedynek filmowy vol 13
Weekendowy pojedynek filmowy vol 13Brand24
 
5.11.15 Вебинар КАК ЭФФЕКТИВНО ОРГАНИЗОВАТЬ ПОИСК ПАРТНЕРОВ НА ВНЕШНИХ РЫНКА...
5.11.15 Вебинар  КАК ЭФФЕКТИВНО ОРГАНИЗОВАТЬ ПОИСК ПАРТНЕРОВ НА ВНЕШНИХ РЫНКА...5.11.15 Вебинар  КАК ЭФФЕКТИВНО ОРГАНИЗОВАТЬ ПОИСК ПАРТНЕРОВ НА ВНЕШНИХ РЫНКА...
5.11.15 Вебинар КАК ЭФФЕКТИВНО ОРГАНИЗОВАТЬ ПОИСК ПАРТНЕРОВ НА ВНЕШНИХ РЫНКА...Олег Паладьев
 
מצגת רקע כלכלית ארנון רונד
מצגת רקע כלכלית ארנון רונדמצגת רקע כלכלית ארנון רונד
מצגת רקע כלכלית ארנון רונדTashtiot media
 
Plano Market Report - March 2010
Plano Market Report - March 2010Plano Market Report - March 2010
Plano Market Report - March 2010Valarie Littles
 
Сопровождение движущихся объектов в условиях их заслонения движущимися и непо...
Сопровождение движущихся объектов в условиях их заслонения движущимися и непо...Сопровождение движущихся объектов в условиях их заслонения движущимися и непо...
Сопровождение движущихся объектов в условиях их заслонения движущимися и непо...Nikolai Ptitsyn
 
5分でわかるPHPのクロージャ(web公開版)
5分でわかるPHPのクロージャ(web公開版)5分でわかるPHPのクロージャ(web公開版)
5分でわかるPHPのクロージャ(web公開版)hajikami
 
Yritystä kehiin 26.2.2014: Käytettävien ja visuaalisesti näyttävien Business ...
Yritystä kehiin 26.2.2014: Käytettävien ja visuaalisesti näyttävien Business ...Yritystä kehiin 26.2.2014: Käytettävien ja visuaalisesti näyttävien Business ...
Yritystä kehiin 26.2.2014: Käytettävien ja visuaalisesti näyttävien Business ...Turun Teknologiakiinteistöt
 

En vedette (13)

Tao Of Badass Torrents
Tao Of Badass TorrentsTao Of Badass Torrents
Tao Of Badass Torrents
 
Treści dotyczące odejścia Steve Jobsa ze stanowiska CEO Apple
Treści dotyczące odejścia Steve Jobsa ze stanowiska CEO AppleTreści dotyczące odejścia Steve Jobsa ze stanowiska CEO Apple
Treści dotyczące odejścia Steve Jobsa ze stanowiska CEO Apple
 
Cover page
Cover pageCover page
Cover page
 
Fx Trader
Fx TraderFx Trader
Fx Trader
 
Weekendowy pojedynek filmowy vol 13
Weekendowy pojedynek filmowy vol 13Weekendowy pojedynek filmowy vol 13
Weekendowy pojedynek filmowy vol 13
 
4th board meeting
4th board meeting4th board meeting
4th board meeting
 
03
0303
03
 
5.11.15 Вебинар КАК ЭФФЕКТИВНО ОРГАНИЗОВАТЬ ПОИСК ПАРТНЕРОВ НА ВНЕШНИХ РЫНКА...
5.11.15 Вебинар  КАК ЭФФЕКТИВНО ОРГАНИЗОВАТЬ ПОИСК ПАРТНЕРОВ НА ВНЕШНИХ РЫНКА...5.11.15 Вебинар  КАК ЭФФЕКТИВНО ОРГАНИЗОВАТЬ ПОИСК ПАРТНЕРОВ НА ВНЕШНИХ РЫНКА...
5.11.15 Вебинар КАК ЭФФЕКТИВНО ОРГАНИЗОВАТЬ ПОИСК ПАРТНЕРОВ НА ВНЕШНИХ РЫНКА...
 
מצגת רקע כלכלית ארנון רונד
מצגת רקע כלכלית ארנון רונדמצגת רקע כלכלית ארנון רונד
מצגת רקע כלכלית ארנון רונד
 
Plano Market Report - March 2010
Plano Market Report - March 2010Plano Market Report - March 2010
Plano Market Report - March 2010
 
Сопровождение движущихся объектов в условиях их заслонения движущимися и непо...
Сопровождение движущихся объектов в условиях их заслонения движущимися и непо...Сопровождение движущихся объектов в условиях их заслонения движущимися и непо...
Сопровождение движущихся объектов в условиях их заслонения движущимися и непо...
 
5分でわかるPHPのクロージャ(web公開版)
5分でわかるPHPのクロージャ(web公開版)5分でわかるPHPのクロージャ(web公開版)
5分でわかるPHPのクロージャ(web公開版)
 
Yritystä kehiin 26.2.2014: Käytettävien ja visuaalisesti näyttävien Business ...
Yritystä kehiin 26.2.2014: Käytettävien ja visuaalisesti näyttävien Business ...Yritystä kehiin 26.2.2014: Käytettävien ja visuaalisesti näyttävien Business ...
Yritystä kehiin 26.2.2014: Käytettävien ja visuaalisesti näyttävien Business ...
 

Similaire à JavaScript в терминах БЭМ / Владимир Варанкин (Яндекс)

Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"Yandex
 
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"Yandex
 
Владимир Варанкин "БЭМ и JavaScript: Зачем мы написали JS-фреймворк?"
Владимир Варанкин "БЭМ и JavaScript: Зачем мы написали JS-фреймворк?"Владимир Варанкин "БЭМ и JavaScript: Зачем мы написали JS-фреймворк?"
Владимир Варанкин "БЭМ и JavaScript: Зачем мы написали JS-фреймворк?"Yandex
 
Презентация к докладу про БЭМ by Mikhail Troshev
Презентация к докладу про БЭМ  by Mikhail TroshevПрезентация к докладу про БЭМ  by Mikhail Troshev
Презентация к докладу про БЭМ by Mikhail Troshev1 1
 
Опыт разработки эффективного SPA
Опыт разработки эффективного SPAОпыт разработки эффективного SPA
Опыт разработки эффективного SPAEugene Abrosimov
 
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CСергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CYandex
 
Регрессионное тестирование верстки
Регрессионное тестирование версткиРегрессионное тестирование верстки
Регрессионное тестирование версткиTalks&Works
 
Планы по разработке bem-core@v3 — Сергей Бережной, Яндекс
Планы по разработке bem-core@v3 — Сергей Бережной, ЯндексПланы по разработке bem-core@v3 — Сергей Бережной, Яндекс
Планы по разработке bem-core@v3 — Сергей Бережной, ЯндексYandex
 
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Fedor Lavrentyev
 
Самодельная параметризация и параллелизация тестов на Webdriver (JS)
Самодельная параметризация и параллелизация тестов на Webdriver (JS) Самодельная параметризация и параллелизация тестов на Webdriver (JS)
Самодельная параметризация и параллелизация тестов на Webdriver (JS) COMAQA.BY
 
jQuery. Введение и практика
jQuery. Введение и практикаjQuery. Введение и практика
jQuery. Введение и практикаSlava Aliev
 
Владимир Варанкин — Сервер-сайд в БЭМ-терминах (Node.js)
Владимир Варанкин — Сервер-сайд в БЭМ-терминах (Node.js)Владимир Варанкин — Сервер-сайд в БЭМ-терминах (Node.js)
Владимир Варанкин — Сервер-сайд в БЭМ-терминах (Node.js)Yandex
 
Владимир Варанкин — «БЭМ»
Владимир Варанкин — «БЭМ»Владимир Варанкин — «БЭМ»
Владимир Варанкин — «БЭМ»Yandex
 
Сергей Бережной "Внедрение БЭМ в существующие системы"
Сергей Бережной "Внедрение БЭМ в существующие системы"Сергей Бережной "Внедрение БЭМ в существующие системы"
Сергей Бережной "Внедрение БЭМ в существующие системы"Yandex
 
Варвара Степанова "БЭМ и JavaScript: Сборник рецептов"
Варвара Степанова "БЭМ и JavaScript: Сборник рецептов"Варвара Степанова "БЭМ и JavaScript: Сборник рецептов"
Варвара Степанова "БЭМ и JavaScript: Сборник рецептов"Yandex
 

Similaire à JavaScript в терминах БЭМ / Владимир Варанкин (Яндекс) (20)

Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
 
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"
 
Владимир Варанкин "БЭМ и JavaScript: Зачем мы написали JS-фреймворк?"
Владимир Варанкин "БЭМ и JavaScript: Зачем мы написали JS-фреймворк?"Владимир Варанкин "БЭМ и JavaScript: Зачем мы написали JS-фреймворк?"
Владимир Варанкин "БЭМ и JavaScript: Зачем мы написали JS-фреймворк?"
 
Презентация к докладу про БЭМ by Mikhail Troshev
Презентация к докладу про БЭМ  by Mikhail TroshevПрезентация к докладу про БЭМ  by Mikhail Troshev
Презентация к докладу про БЭМ by Mikhail Troshev
 
Опыт разработки эффективного SPA
Опыт разработки эффективного SPAОпыт разработки эффективного SPA
Опыт разработки эффективного SPA
 
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CСергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3C
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
Регрессионное тестирование верстки
Регрессионное тестирование версткиРегрессионное тестирование верстки
Регрессионное тестирование верстки
 
Планы по разработке bem-core@v3 — Сергей Бережной, Яндекс
Планы по разработке bem-core@v3 — Сергей Бережной, ЯндексПланы по разработке bem-core@v3 — Сергей Бережной, Яндекс
Планы по разработке bem-core@v3 — Сергей Бережной, Яндекс
 
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
 
Самодельная параметризация и параллелизация тестов на Webdriver (JS)
Самодельная параметризация и параллелизация тестов на Webdriver (JS) Самодельная параметризация и параллелизация тестов на Webdriver (JS)
Самодельная параметризация и параллелизация тестов на Webdriver (JS)
 
jQuery. Введение и практика
jQuery. Введение и практикаjQuery. Введение и практика
jQuery. Введение и практика
 
бегун
бегунбегун
бегун
 
Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
 
Владимир Варанкин — Сервер-сайд в БЭМ-терминах (Node.js)
Владимир Варанкин — Сервер-сайд в БЭМ-терминах (Node.js)Владимир Варанкин — Сервер-сайд в БЭМ-терминах (Node.js)
Владимир Варанкин — Сервер-сайд в БЭМ-терминах (Node.js)
 
Владимир Варанкин — «БЭМ»
Владимир Варанкин — «БЭМ»Владимир Варанкин — «БЭМ»
Владимир Варанкин — «БЭМ»
 
Yac2012
Yac2012Yac2012
Yac2012
 
БЭМ
БЭМБЭМ
БЭМ
 
Сергей Бережной "Внедрение БЭМ в существующие системы"
Сергей Бережной "Внедрение БЭМ в существующие системы"Сергей Бережной "Внедрение БЭМ в существующие системы"
Сергей Бережной "Внедрение БЭМ в существующие системы"
 
Варвара Степанова "БЭМ и JavaScript: Сборник рецептов"
Варвара Степанова "БЭМ и JavaScript: Сборник рецептов"Варвара Степанова "БЭМ и JavaScript: Сборник рецептов"
Варвара Степанова "БЭМ и JavaScript: Сборник рецептов"
 

Plus de Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

Plus de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

JavaScript в терминах БЭМ / Владимир Варанкин (Яндекс)