SlideShare a Scribd company logo
1 of 88
Download to read offline
БЭМ и JavaScript: Сборник рецептов

Варя Степанова
руководитель группы разработки интерфейсов




Я.Субботник, Москва, 8 сентября 2012 года
bit.ly/P121UR



2
Вложенные блоки
Блоки b-menu-*




4
Блоки b-menu-*




4
Как работает b-menu-*?

                thi
                    s
                 .tr
                        igg
                              er(
                                    ‘cu
                                        r   ren
                                                  t’)
                                                      ;




5
b-seach




6
find*() методы




                 внутри
                 снаружи
                 на себе
7
BEM.DOM.decl('b-search', {
      onSetMod: {
        'js': {
          'inited': function() {

                    this
                      .findBlockInside(
                         'b-menu-vert')
                      .on(
                         'current', this.doSmth()
                      );
                }
            }
        }
    }

8
...
    <div class="b-search__filter">

      <div
        class="b-menu-vert i-bem"
        onclick="...">
        ...
      </div>

    </div>
    ...



9
...

 <div
   class="b-menu-vert i-bem
          b-search__filter"
   onclick="...">
   ...
 </div>

 ...




10
this
     .findBlockInside(
         this.elem('filter'),
        'b-menu-vert')
     .on('current', this.doSmth()
 );




11
bit.ly/NfYdTa
     Пример
     реиспользования меню




12
Декларативность
Декларативность в архитектуре
bit.ly/OptXT5
     Презентация про
     Кнопочку на РИТ 2012




15
16
Состояния кнопки
16
Состояния кнопки
17
BEM.DOM.decl('b-form-button', {
    onSetMod : {


     'focused' : {

          'yes' : function() {

            ...
            this
               .bindTo('keydown',
this._onKeyDown)
               .elem('input').focus();
b-map & i-geo-point




18
{
     block: 'b-map',

     mods: { ... },

     js: {
       ...
       center: [ 37.58, 55.73 ],
       zoom: 16,
       points: [ ... ]
     }

}



19
bit.ly/RdKGNA
     Пример Яндекс.Карты
     на БЭМ




20
Переопределение уровнем
Переопределение в CSS




22
Переопределение в CSS

 library/blocks/b-head/b-head.css
 -----------------------------------------

 .b-head { color: red; }




22
Переопределение в CSS

 library/blocks/b-head/b-head.css
 -----------------------------------------

 .b-head { color: red; }


 blocks/b-head/b-head.css
 -----------------------------------------

 .b-head { color: green; }

22
Переопределение динамического
метода
b-flash




24
b-flash




24
getDefaultParams : function() {

     return {

          version : '10.0.0',
          width : '100%',
          height : '100%',
          attributes : {},
          ...
     };

 }
25
getDefaultParams : function() {

     return {

          version : '10.0.0',
          width : '50%',
          height : '50%',
          attributes : {},
          ...
     };

 }
26
getDefaultParams : function() {

     return $.extend(
          this.__base(),
          {
            width: '50%',
            height: '50%'
          }
       );

 }

27
Переопределение статического
свойства
b-serp




29
b-serp




29
blocks-common/b-serp/b-serp.js

 BEM.DOM.decl('b-serp', {
      // динамические поля
 }, {
      blocks: []
 });



30
blocks/b-serp/b-serp.js
 BEM.DOM.decl('b-serp', {}, {
     blocks: [ 'b-form-input', 'b-adv',
         'b-serp-list', 'b-more',
         'b-feet' ]
 });

 blocks-new/b-serp/b-serp.js
 BEM.DOM.decl('b-serp', {}, {
     blocks: [ 'b-form-input', 'b-adv',
         'b-filters', 'b-serp2-list',
         'b-more', 'b-feet' ]
 });



31
Переопределение модификатором
b-form-input




33
b-form-input
b-form-input_autocomplete_yes




34
BEM.DOM.decl('b-form-input', {
  onSetMod : {
    'js' : {
       'inited' : function() {
         // инициализация
       }
    },
    'focused' : {
       'yes' : {
         // что делать, когда в фокусе
       }
    }
  }
}


35
36
BEM.DOM.decl({
      block: 'b-form-input',
      modName: 'autocomplete',
      modVal: 'yes'
   },




36
BEM.DOM.decl({
      block: 'b-form-input',
      modName: 'autocomplete',
      modVal: 'yes'
   },
   {
      onSetMod: {
        'js': {
          'inited': function() {
             this.__base.apply(this,
               arguments);
             // расширение
             // функциональности
          },
          ...

36
BEM.DOM.decl({ block: 'b-form-input',
     modName: 'autocomplete',
     modVal: 'yes' },
     {
         onSetMod: {
           ...




37
BEM.DOM.decl({ block: 'b-form-input',
     modName: 'autocomplete',
     modVal: 'yes' },
     {
         onSetMod: {
           ...
           'focused': {
             'yes': function() {
                this.__base();
                // расширение
                //функциональности
             },
             '': function() {
                ...
             }

37
live-события
39
39
BEM.DOM.decl('b-form-select', {
 ...
 }, {

     live: function() {

         this.liveBindTo(
           'item',
           'mouseup',
           function() { ... }

     }

 });


40
live-инициализация
42
42
43
43
43
BEM.DOM.decl('b-block', { ... },

{

         /* Статические методы и свойства */


}

);


    44
BEM.DOM.decl('b-block', { ... },

{
         live: function() {

             /* Когда инициализировать? */


         }

}

    45
live: function() {

    this.liveInitOnEvent(...)

         .liveInitOnBlockEvent(...)

         .liveInitOnBlockInsideInit(...)

         .liveInitOnBlockInsideEvent(...)

         .liveInitOnBlockInit(...)

}


    46
this

     .liveBindTo('leftclick', function(e){
        this._onClick(e);
     })

     .liveBindTo(
       'mouseover ... focusin',
       function(e) {
           var mod = eventsToMods[e.type];
          this.setMod(mod.name, mod.val || '');
         });
     }



47
Миксование блоков
Миксование блоков

 <div class="b-block1
              b-block2
              i-bem"
      onclick="
         return { 'b-block1': {},
                  'b-block2': {}
                }
      ">

49
Блок сбора статистики кликов

 <div class="b-domik b-c i-bem"
 onclick="return { 'b-domik' :
 {...}, 'b-c' : { .. } }">
   ...
   <a class="b-domik__help">
     Помощь
   </a>
   ...
 </div>

50
baseBlock
Блоки b-menu-*




52
Блоки b-menu-*




52
BEM.DOM.decl('i-menu', {

     onElemSetMod : {

       'item' : {
         'state' : {
           'current' : function(...) {
              ...
              this.trigger('current');
           }
         }

       }
   }
 });

53
blocks-desktop/b-menu-horiz/b-menu-horiz.js
 BEM.DOM.decl(
    {
      name: 'b-menu-horiz',
      baseBlock: 'i-menu'
    }
 );

 blocks-desktop/b-menu-vert/b-menu-vert.js
 BEM.DOM.decl(
    {
      name: 'b-menu-vert',
      baseBlock: 'i-menu'
    }
 );
54
bit.ly/Tq5aU4
     Блок i-menu




55
Распределённый :-) блок
Один и тот же блок




57
<div
   class="b-my-block i-bem"
   onclick="return {
     'b-my-block' : {
       'id' : 'myBlockId'
     }
   }"> <!-- smth --> </div>

 <div
   class="b-my-block i-bem"
   onclick="return {
     'b-my-block' : {
       'id' : 'myBlockId'
     }
   }”> <!-- smth else --> </div>

58
b-tabbed-pane




59
<div class="b-tabbed-pane b-tabbed-
 pane__tabs i-bem" onclick="return {'b-
 tabbed-pane':{'id':'myTabbedPaneId'}}">


 <div class="b-tabbed-pane b-tabbed-
 pane__panels i-bem" onclick="return
 {'b-tabbed-pane':
 {'id':'myTabbedPaneId'}}">




60
Блок без DOM-представления
BEM.decl('i-system', {

     // динамические поля

 }, {

     // статические поля

 });




62
BEM.decl('i-system', {

     // динамические поля

 }, {

     // статические поля

 });


 BEM.DOM.decl(...)




62
channel
channel API

 BEM.channel('channelName');

 BEM
    .channel('channelName')
    .trigger('event');

 BEM.channel('channelName').on();

 BEM.channel('channelName').un();


64
var channel = BEM.channel('sys');

 BEM.decl('i-system', {}, {

     // каждые 50 милисекунд
     channel.trigger('tick');

     // если активности нет
     channel.trigger('idle');

     // при mousemove и keydown
     channel.trigger('wakeup');

 });


65
BEM.DOM.decl('b-form-input', {
   'js' : {
      'inited' : function() {
        ...
        var sys = this.channel('sys').on({
          'tick' : update,
          'idle' : function() {
             сhannel.un('tick', update);
          },
          'wakeup' : function() {
             сhannel.on('tick', update);
          }
        });
      }
   },

66
67
update = function () {
   var inst, i = 0;
   while(inst = inst[i++])
     inst.val(in.elem('input').val());
 }




67
update = function () {
   var inst, i = 0;
   while(inst = inst[i++])
     inst.val(in.elem('input').val());
 }

 BEM.DOM.decl('b-form-input', {
   ...




67
update = function () {
   var inst, i = 0;
   while(inst = inst[i++])
     inst.val(in.elem('input').val());
 }

 BEM.DOM.decl('b-form-input', {
   ...
   val : function(val, data) {
     if (val != oldVal)
       this.trigger('change', data);
   }
   ...
 });


67
bit.ly/OVJHhs
     Блок i-system, c
     примером




68
69
Варвара Степанова
toivonen@yandex-team.ru

   toivonens

More Related Content

What's hot

Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4Technopark
 
Магия метаклассов
Магия метаклассовМагия метаклассов
Магия метаклассовAndrey Zakharevich
 
Techtalk#8: Design patterns in real life
Techtalk#8: Design patterns in real lifeTechtalk#8: Design patterns in real life
Techtalk#8: Design patterns in real lifeDA-14
 
Web осень 2013 лекция 4
Web осень 2013 лекция 4Web осень 2013 лекция 4
Web осень 2013 лекция 4Technopark
 
Работа с БД в Drupal 7
Работа с БД в Drupal 7Работа с БД в Drupal 7
Работа с БД в Drupal 7Eugene Fidelin
 
Web весна 2012 лекция 4
Web весна 2012 лекция 4Web весна 2012 лекция 4
Web весна 2012 лекция 4Technopark
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6Technopark
 
Профилирование и отладка Django
Профилирование и отладка DjangoПрофилирование и отладка Django
Профилирование и отладка DjangoVladimir Rudnyh
 
Интуит. Разработка приложений для iOS. Лекция 5. Сложные Views
Интуит. Разработка приложений для iOS. Лекция 5. Сложные ViewsИнтуит. Разработка приложений для iOS. Лекция 5. Сложные Views
Интуит. Разработка приложений для iOS. Лекция 5. Сложные ViewsГлеб Тарасов
 
Web осень 2013 лекция 8
Web осень 2013 лекция 8Web осень 2013 лекция 8
Web осень 2013 лекция 8Technopark
 
Максим Щепелин. "Unittesting. Как?"
Максим Щепелин. "Unittesting. Как?"Максим Щепелин. "Unittesting. Как?"
Максим Щепелин. "Unittesting. Как?"Python Meetup
 
Web осень 2013 лекция 7
Web осень 2013 лекция 7Web осень 2013 лекция 7
Web осень 2013 лекция 7Technopark
 
Python dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущееPython dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущееdelimitry
 
Александр Чупахин "Архитектура API 2.0"
Александр Чупахин "Архитектура API 2.0"Александр Чупахин "Архитектура API 2.0"
Александр Чупахин "Архитектура API 2.0"Yandex
 
Making Scalable JavaScript Application
Making Scalable JavaScript ApplicationMaking Scalable JavaScript Application
Making Scalable JavaScript ApplicationMikhail Davydov
 
Create payment systems for Drupal Commerce
Create payment systems for Drupal CommerceCreate payment systems for Drupal Commerce
Create payment systems for Drupal CommerceYury Glushkov
 
Многопоточность в браузере. Модель акторов — Константин Крамлих
Многопоточность в браузере. Модель акторов — Константин КрамлихМногопоточность в браузере. Модель акторов — Константин Крамлих
Многопоточность в браузере. Модель акторов — Константин КрамлихYandex
 

What's hot (20)

Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4
 
Магия метаклассов
Магия метаклассовМагия метаклассов
Магия метаклассов
 
Techtalk#8: Design patterns in real life
Techtalk#8: Design patterns in real lifeTechtalk#8: Design patterns in real life
Techtalk#8: Design patterns in real life
 
Web осень 2013 лекция 4
Web осень 2013 лекция 4Web осень 2013 лекция 4
Web осень 2013 лекция 4
 
Работа с БД в Drupal 7
Работа с БД в Drupal 7Работа с БД в Drupal 7
Работа с БД в Drupal 7
 
Web весна 2012 лекция 4
Web весна 2012 лекция 4Web весна 2012 лекция 4
Web весна 2012 лекция 4
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
 
Bem для всех
Bem для всехBem для всех
Bem для всех
 
Javascript
JavascriptJavascript
Javascript
 
Профилирование и отладка Django
Профилирование и отладка DjangoПрофилирование и отладка Django
Профилирование и отладка Django
 
Интуит. Разработка приложений для iOS. Лекция 5. Сложные Views
Интуит. Разработка приложений для iOS. Лекция 5. Сложные ViewsИнтуит. Разработка приложений для iOS. Лекция 5. Сложные Views
Интуит. Разработка приложений для iOS. Лекция 5. Сложные Views
 
Web осень 2013 лекция 8
Web осень 2013 лекция 8Web осень 2013 лекция 8
Web осень 2013 лекция 8
 
Максим Щепелин. "Unittesting. Как?"
Максим Щепелин. "Unittesting. Как?"Максим Щепелин. "Unittesting. Как?"
Максим Щепелин. "Unittesting. Как?"
 
Web осень 2013 лекция 7
Web осень 2013 лекция 7Web осень 2013 лекция 7
Web осень 2013 лекция 7
 
Python dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущееPython dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущее
 
Avito / SPA Meetup 2
Avito / SPA Meetup 2Avito / SPA Meetup 2
Avito / SPA Meetup 2
 
Александр Чупахин "Архитектура API 2.0"
Александр Чупахин "Архитектура API 2.0"Александр Чупахин "Архитектура API 2.0"
Александр Чупахин "Архитектура API 2.0"
 
Making Scalable JavaScript Application
Making Scalable JavaScript ApplicationMaking Scalable JavaScript Application
Making Scalable JavaScript Application
 
Create payment systems for Drupal Commerce
Create payment systems for Drupal CommerceCreate payment systems for Drupal Commerce
Create payment systems for Drupal Commerce
 
Многопоточность в браузере. Модель акторов — Константин Крамлих
Многопоточность в браузере. Модель акторов — Константин КрамлихМногопоточность в браузере. Модель акторов — Константин Крамлих
Многопоточность в браузере. Модель акторов — Константин Крамлих
 

Similar to Варвара Степанова "БЭМ и JavaScript: Сборник рецептов"

Кир Белевич "Миксы во вселенной БЭМ"
Кир Белевич "Миксы во вселенной БЭМ"Кир Белевич "Миксы во вселенной БЭМ"
Кир Белевич "Миксы во вселенной БЭМ"Yandex
 
Слезаем с велосипедов: опыт использования open source в Android. Дмитрий Кунин
Слезаем с велосипедов: опыт использования open source в Android. Дмитрий КунинСлезаем с велосипедов: опыт использования open source в Android. Дмитрий Кунин
Слезаем с велосипедов: опыт использования open source в Android. Дмитрий КунинYandex
 
JavaScript в терминах БЭМ / Владимир Варанкин (Яндекс)
JavaScript в терминах БЭМ / Владимир Варанкин (Яндекс)JavaScript в терминах БЭМ / Владимир Варанкин (Яндекс)
JavaScript в терминах БЭМ / Владимир Варанкин (Яндекс)Ontico
 
Сайт с нуля на полном стеке БЭМ-технологий
Сайт с нуля на полном стеке БЭМ-технологийСайт с нуля на полном стеке БЭМ-технологий
Сайт с нуля на полном стеке БЭМ-технологийYandex
 
Планы по разработке bem-core@v3 — Сергей Бережной, Яндекс
Планы по разработке bem-core@v3 — Сергей Бережной, ЯндексПланы по разработке bem-core@v3 — Сергей Бережной, Яндекс
Планы по разработке bem-core@v3 — Сергей Бережной, ЯндексYandex
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveSQALab
 
Владимир Варанкин — «БЭМ»
Владимир Варанкин — «БЭМ»Владимир Варанкин — «БЭМ»
Владимир Варанкин — «БЭМ»Yandex
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Mikhail Kurnosov
 
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...Ontico
 
Перевод базы Caché из 8 бит в Unicode
Перевод базы Caché из 8 бит в UnicodeПеревод базы Caché из 8 бит в Unicode
Перевод базы Caché из 8 бит в UnicodeInterSystems
 
Владимир Алаев, Сергей Белов "Новые возможности bem-tools для автоматической ...
Владимир Алаев, Сергей Белов "Новые возможности bem-tools для автоматической ...Владимир Алаев, Сергей Белов "Новые возможности bem-tools для автоматической ...
Владимир Алаев, Сергей Белов "Новые возможности bem-tools для автоматической ...Yandex
 
Александр Тармолов "БЭМ и JavaScript: Тестирование"
Александр Тармолов "БЭМ и JavaScript: Тестирование"Александр Тармолов "БЭМ и JavaScript: Тестирование"
Александр Тармолов "БЭМ и JavaScript: Тестирование"Yandex
 
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"Yandex
 
Web осень 2012 лекция 4
Web осень 2012 лекция 4Web осень 2012 лекция 4
Web осень 2012 лекция 4Technopark
 
Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2Oleksii Okhrymenko
 
Производительность в Django
Производительность в DjangoПроизводительность в Django
Производительность в DjangoMoscowDjango
 
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кодаAndrey Karpov
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода Pavel Tsukanov
 

Similar to Варвара Степанова "БЭМ и JavaScript: Сборник рецептов" (20)

Кир Белевич "Миксы во вселенной БЭМ"
Кир Белевич "Миксы во вселенной БЭМ"Кир Белевич "Миксы во вселенной БЭМ"
Кир Белевич "Миксы во вселенной БЭМ"
 
Слезаем с велосипедов: опыт использования open source в Android. Дмитрий Кунин
Слезаем с велосипедов: опыт использования open source в Android. Дмитрий КунинСлезаем с велосипедов: опыт использования open source в Android. Дмитрий Кунин
Слезаем с велосипедов: опыт использования open source в Android. Дмитрий Кунин
 
Documents in JavaScript
Documents in JavaScriptDocuments in JavaScript
Documents in JavaScript
 
JavaScript в терминах БЭМ / Владимир Варанкин (Яндекс)
JavaScript в терминах БЭМ / Владимир Варанкин (Яндекс)JavaScript в терминах БЭМ / Владимир Варанкин (Яндекс)
JavaScript в терминах БЭМ / Владимир Варанкин (Яндекс)
 
Сайт с нуля на полном стеке БЭМ-технологий
Сайт с нуля на полном стеке БЭМ-технологийСайт с нуля на полном стеке БЭМ-технологий
Сайт с нуля на полном стеке БЭМ-технологий
 
Планы по разработке bem-core@v3 — Сергей Бережной, Яндекс
Планы по разработке bem-core@v3 — Сергей Бережной, ЯндексПланы по разработке bem-core@v3 — Сергей Бережной, Яндекс
Планы по разработке bem-core@v3 — Сергей Бережной, Яндекс
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehave
 
Владимир Варанкин — «БЭМ»
Владимир Варанкин — «БЭМ»Владимир Варанкин — «БЭМ»
Владимир Варанкин — «БЭМ»
 
Code Style (in russian)
Code Style (in russian)Code Style (in russian)
Code Style (in russian)
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
 
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
 
Перевод базы Caché из 8 бит в Unicode
Перевод базы Caché из 8 бит в UnicodeПеревод базы Caché из 8 бит в Unicode
Перевод базы Caché из 8 бит в Unicode
 
Владимир Алаев, Сергей Белов "Новые возможности bem-tools для автоматической ...
Владимир Алаев, Сергей Белов "Новые возможности bem-tools для автоматической ...Владимир Алаев, Сергей Белов "Новые возможности bem-tools для автоматической ...
Владимир Алаев, Сергей Белов "Новые возможности bem-tools для автоматической ...
 
Александр Тармолов "БЭМ и JavaScript: Тестирование"
Александр Тармолов "БЭМ и JavaScript: Тестирование"Александр Тармолов "БЭМ и JavaScript: Тестирование"
Александр Тармолов "БЭМ и JavaScript: Тестирование"
 
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"
 
Web осень 2012 лекция 4
Web осень 2012 лекция 4Web осень 2012 лекция 4
Web осень 2012 лекция 4
 
Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2
 
Производительность в Django
Производительность в DjangoПроизводительность в Django
Производительность в Django
 
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кода
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода
 

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айт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

Варвара Степанова "БЭМ и JavaScript: Сборник рецептов"