Components now! (in russian)

Mikhail Davydov
Mikhail DavydovJavaScript & Node.js Developer at Yandex
Components now! (in russian)
Components
Now!
Михаил Давыдов
РИТ++, 14-15 Апреля 2014
Библиотеки
●jQuery — чинит DOM
●Underscore — добавляет API ECMAScript 5
●Backbone — приносит MV*
●Все они созданы для исправления Web
По историческим причинм хорошие инструменты - библиотеки.
The DOM is a Mess 2009
Библиотеки
04
Библиотеки везде
●Тяжелые
–jQuery 2.0.3 — 230K (не сжатый)
●Их сложно понять
–Цикломатическая сложность $.ajax — 43
●Слишком могущественные
–$.ajax, $.animate, _
Библиотеки большие
06
●Сложно использовать только маленькую часть
–$.Deferred, $.ajax
–_.template
●Приходится делить вручную
●Их модульность мало помогает
Их части тесно связаны
07
●Все хотят jQuery
●Библиотеки зависят от библиотек
–Backbone+jQuery+Underscore
●Ручное управление зависимостями
–Bower и Npm — спасители!
Управление зависимостями
08
Веб починили*
Components now! (in russian)
●querySelector
●CSS3 Selectors*
●Web Storage (localStorage)
●Cross-Origin Resource Sharing*
* полностью с полифилами
Can I Use
Важные DOM APIs
11
ECMAScript 5
●CSS3 Selectors (медленный, но работает)
●Cross-Origin Resource Sharing
●HTML5 Elements
●ECMAScript 5
HTML5 Please polyfills
Полифилы чинят остальное
13
Components now! (in russian)
Mobile
Мобильный рынок растет
Почему мы все еще
используем
библиотеки?
Компоненты
Простые
●Легкие
–dom — 28K, 3K self (не сжатый)
●Единственная ответственность & KISS-принцип
●Очень легко понять
–Поддерживать
–Писать тесты
Компоненты простые
20
Независимые
●Содержат все зависимости
–Большая часть внешние
●Легко использовать повторно
– bower i name
– npm i name
●Легко использовать только часть
Компоненты независимы
22
Изолированные
●Не конфликтуют с другими
–Изоляция CSS
–Гибкое представление
–Нет утечек глобалов
●Имеют ограниченный доступ к другим
– require()
Компоненты изолированы
24
Components now! (in russian)
●Идея произвольного HTML элемента
●API/Framework
–Shadow DOM (Инкапсуляция)
–HTML Imports & Templates
–Template Binding
Web Components: A Tectonic Shift for Web Development
WebComponents
26
HTML Templates
Shadow DOM
Custom Elements
HTML Imports
Возможно починить в других барузерах, используя Polymer.
WebComponents в 2014 году
27
WebComponents API Альтернатива
Custom Elements Компонентные движки
Shadow DOM BEM Методология
HTML Templates Шаблонные движки
HTML Imports Инструменты сборки
Scoped CSS BEM или OOCSS
Template Binding Data binding
Альтернативы этим API
28
●X-Tag
●jQuery UI Widgets
●Dojo Widgets
●React
●bem-tools
●basis.js
Компонентные движки
29
Components now! (in russian)
●Изоляция CSS
●Блок — Custom Element
●Элемент — Shadow DOM
●Модификатор — Нет аналога
●i-bem — Логика блока
БЕМ и WebComponents
31
.tab-panel— Блок
.tab-panel__tab— Элемент
.tab-panel__tab_state_active
Давайте напишем
Компонент!
Components now! (in russian)
●Компонент Простой
–KISS
●Компонент Независимый
–Все на борту
●Компонент Изолированный
–HTML, CSS, JS
Помним, что
35
Package file
// bower.json
{
"name": "my-share",
"version": "1.0.0",
"main": ["my-share.js"]
}
Bower и формат bower.json
Package file это контракт
01.
02.
03.
04.
05.
06.
37
HTML
<!-- my-share.html -->
<a href="{{ href }}" class="my-share">
<img src="{{ icon }}" class="my-share__icon"/>
<span class="my-share__label">{{ label }}</span>
</a>
Приватный HTML
01.
02.
03.
04.
05.
39
Интерфейс
<a class="my-share"
data-href="{{ href }}"
data-icon="{{ icon }}"
>{{ label }}</a>
Интерфейс похож на Custom Element из WebComponents.
Интерфейс компонента
01.
02.
03.
04.
41
<my-share
href="{{ href }}"
icon="{{ icon }}"
>{{ label }}</my-share>
WebComponents для сравнения
01.
02.
03.
04.
42
.my-share {}
.my-share__icon {
vertical-align: middle;
height: 16px;
}
.my-share__label {
padding-left: 5px;
}
CSS Компонента
01.
02.
03.
04.
05.
06.
07.
08.
43
my-share {}
.icon {
vertical-align: middle;
height: 16px;
}
.label {
padding-left: 5px;
}
CSS WebComponent
01.
02.
03.
04.
05.
06.
07.
08.
44
●WebComponent — DOM API
– <style scoped>
●BEM
–Избегание каскада в CSS
–Соглашения именования .block__element
CSS изолирован
45
Зависимости
// bower.json
"dependencies": {
"tpl": "azproduction/lodash-template",
"domify": "component/domify",
"decl": "azproduction/decl"
}
Декларируем все зависимости.
Внешние зависимости
01.
02.
03.
04.
05.
06.
47
// my-share.js
var tpl = require('tpl'),
decl = require('decl'),
domify = require('domify');
var html = require('templates/my-share'),
template = tpl(html);
Связи модуля с другими
01.
02.
03.
04.
05.
06.
07.
48
function MyShare(el) {
this.options = this.collectOptions(el);
this.el = this.render();
this.delegateEvents();
this.replaceElement(el);
}
decl('.my-share', MyShare);
module.exports = MyShare;
Базовая логика компонента
01.
02.
03.
04.
05.
06.
07.
08.
49
●CommonJS/Modules
–Нет утечек глобалов
–Просит зависимости, а не берет их
–Поставляет ресурсы
●Так же можно использовать AMD
JavaScript модуля изолирован
50
Сборка
●Получение всех зависимостей
●Компиляция
–стили, скрипты, шаблоны
●Упаковка скриптов и шаблонов
●Конкатинация стилей
Сборка компонента
52
●bem-tools
●Component
●Browserify
●LMD
Инструменты сборки
компонентов
53
<a class="my-share" ...>Tweet</a>
<link rel="stylesheet" href="my-share.css"/>
<script src="my-share.js"></script>
Компонент легко использовать
01.
02.
03.
54
<my-share ...>Tweet</my-share>
<link rel="import" href="my-share.html"/>
WebComponent
01.
02.
55
Живой пример
56
Components now! (in russian)
Components now! (in russian)
●Web уже починили, Mobile растет
●Библиотеки слишком сложны
●WebComponents == API
●Пишите компоненты. Сегодня!
Заключение
59
Components Now!
Михаил Давыдов
@azproduction
60
●Живой пример my-share
●You might not need jQuery
●BEM Методология
●Web Components
●Polymer Project
Полезные ресусы
61
clck.ru/97Zm8
● minecraft.gamepedia.com/Blocks
● fr.fotopedia.com/wiki/Bibliothèque#!/items/flickr-6899137527
● www.planetminecraft.com/project/minecraft-site/
● investments.academic.ru/1513/Форвардный_контракт
● frozen-lama.deviantart.com/art/Minecraft-Compound-Door-209872466
● www.postandcourier.com/article/20120620/pc1002/120629985
● isintu.com/features/responsive-design/
● nicolaijuhler.wordpress.com/
● r3c0nic.deviantart.com/art/minecraft-Blueprint-293455933
● ru-wallp.com/view/1542/
Источники изображений
63
1 of 63

Recommended

Разработка небольшого проекта c BEM и node.js — Сергей Пузанков by
Разработка небольшого проекта c BEM и node.js — Сергей ПузанковРазработка небольшого проекта c BEM и node.js — Сергей Пузанков
Разработка небольшого проекта c BEM и node.js — Сергей ПузанковYandex
552 views28 slides
Alex baumgertner bem_in_small_projects by
Alex baumgertner bem_in_small_projectsAlex baumgertner bem_in_small_projects
Alex baumgertner bem_in_small_projectsAlexander Baumgertner
6.7K views52 slides
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре... by
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...Andrey Taritsyn
2.1K views37 slides
State of the Standardized Web by
State of the Standardized WebState of the Standardized Web
State of the Standardized WebYandex
240 views28 slides
BEM — block, element, modification conception by
BEM — block, element, modification conceptionBEM — block, element, modification conception
BEM — block, element, modification conceptionVadim Patsev
815 views36 slides
Дмитрий Кушников — БЭМ глазами бэкенд-разработчика by
Дмитрий Кушников — БЭМ глазами бэкенд-разработчикаДмитрий Кушников — БЭМ глазами бэкенд-разработчика
Дмитрий Кушников — БЭМ глазами бэкенд-разработчикаYandex
3.7K views23 slides

More Related Content

What's hot

Yaremchuk - Корпоративные сайты by
Yaremchuk - Корпоративные сайтыYaremchuk - Корпоративные сайты
Yaremchuk - Корпоративные сайтыAndrii Podanenko
613 views14 slides
Евгений Филатов "Одностраничные приложения на БЭМ и Node.js" by
Евгений Филатов "Одностраничные приложения на БЭМ и Node.js"Евгений Филатов "Одностраничные приложения на БЭМ и Node.js"
Евгений Филатов "Одностраничные приложения на БЭМ и Node.js"Yandex
2K views42 slides
Презентация к докладу про БЭМ by Mikhail Troshev by
Презентация к докладу про БЭМ  by Mikhail TroshevПрезентация к докладу про БЭМ  by Mikhail Troshev
Презентация к докладу про БЭМ by Mikhail Troshev1 1
425 views20 slides
Разработка адаптивных шаблонов на базе Omega by
Разработка адаптивных шаблонов на базе OmegaРазработка адаптивных шаблонов на базе Omega
Разработка адаптивных шаблонов на базе OmegaTaras Omelianenko
905 views27 slides
What do you MEAN? или введение в Fullstack JavaScript by
What do you MEAN? или введение в Fullstack JavaScriptWhat do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScriptVasiliy Teliatnikov
201 views49 slides
простой и мощный бэкап на базе rsync by
простой и мощный бэкап на базе rsyncпростой и мощный бэкап на базе rsync
простой и мощный бэкап на базе rsyncAndrew Pantyukhin
889 views20 slides

What's hot(20)

Yaremchuk - Корпоративные сайты by Andrii Podanenko
Yaremchuk - Корпоративные сайтыYaremchuk - Корпоративные сайты
Yaremchuk - Корпоративные сайты
Andrii Podanenko613 views
Евгений Филатов "Одностраничные приложения на БЭМ и Node.js" by Yandex
Евгений Филатов "Одностраничные приложения на БЭМ и Node.js"Евгений Филатов "Одностраничные приложения на БЭМ и Node.js"
Евгений Филатов "Одностраничные приложения на БЭМ и Node.js"
Yandex2K views
Презентация к докладу про БЭМ by Mikhail Troshev by 1 1
Презентация к докладу про БЭМ  by Mikhail TroshevПрезентация к докладу про БЭМ  by Mikhail Troshev
Презентация к докладу про БЭМ by Mikhail Troshev
1 1425 views
Разработка адаптивных шаблонов на базе Omega by Taras Omelianenko
Разработка адаптивных шаблонов на базе OmegaРазработка адаптивных шаблонов на базе Omega
Разработка адаптивных шаблонов на базе Omega
Taras Omelianenko905 views
What do you MEAN? или введение в Fullstack JavaScript by Vasiliy Teliatnikov
What do you MEAN? или введение в Fullstack JavaScriptWhat do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScript
простой и мощный бэкап на базе rsync by Andrew Pantyukhin
простой и мощный бэкап на базе rsyncпростой и мощный бэкап на базе rsync
простой и мощный бэкап на базе rsync
Andrew Pantyukhin889 views
Артем Кувалдин: Основы HTML by Yandex
Артем Кувалдин: Основы HTMLАртем Кувалдин: Основы HTML
Артем Кувалдин: Основы HTML
Yandex6.1K views
Компонентный подход: скучно, неинтересно, бесперспективно by Roman Dvornov
Компонентный подход: скучно, неинтересно, бесперспективноКомпонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективно
Roman Dvornov5K views
Кэширование в Веб разработке на серверном и клиентском уровнях by ForkConf
Кэширование в Веб разработке на серверном и клиентском уровняхКэширование в Веб разработке на серверном и клиентском уровнях
Кэширование в Веб разработке на серверном и клиентском уровнях
ForkConf217 views
Артем Маркушев - HTML & CSS by DataArt
Артем Маркушев - HTML & CSSАртем Маркушев - HTML & CSS
Артем Маркушев - HTML & CSS
DataArt601 views
JSLab.Сергей Пузанков. "Разработка небольшого проекта c BEM и node.js" by GeeksLab Odessa
JSLab.Сергей Пузанков. "Разработка небольшого проекта c BEM и node.js" JSLab.Сергей Пузанков. "Разработка небольшого проекта c BEM и node.js"
JSLab.Сергей Пузанков. "Разработка небольшого проекта c BEM и node.js"
GeeksLab Odessa511 views
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended) by Roman Dvornov
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
Roman Dvornov1.7K views
ДАМП 2015 Екатеринбург by Alexey Ivanov
ДАМП 2015 ЕкатеринбургДАМП 2015 Екатеринбург
ДАМП 2015 Екатеринбург
Alexey Ivanov865 views
Управление образами виртуальных машин: libguestfs, virt-tools by Yandex
Управление образами виртуальных машин: libguestfs, virt-toolsУправление образами виртуальных машин: libguestfs, virt-tools
Управление образами виртуальных машин: libguestfs, virt-tools
Yandex2K views
Sergey Cherebedov. Node.js+Drupal by DrupalSib
Sergey Cherebedov. Node.js+DrupalSergey Cherebedov. Node.js+Drupal
Sergey Cherebedov. Node.js+Drupal
DrupalSib579 views
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно" by Yandex
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"
Yandex2.1K views
basis.js - почему я не бросил разрабатывать свой фреймворк by Roman Dvornov
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворк
Roman Dvornov3K views
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript by Alexey Ivanov
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptCSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
Alexey Ivanov1.3K views
Стажировка-2015. Разработка. Занятие 13. Сборка фронтенда by 7bits
Стажировка-2015. Разработка. Занятие 13. Сборка фронтендаСтажировка-2015. Разработка. Занятие 13. Сборка фронтенда
Стажировка-2015. Разработка. Занятие 13. Сборка фронтенда
7bits324 views

Viewers also liked

JavaScript. Event Loop and Timers (in russian) by
JavaScript. Event Loop and Timers (in russian)JavaScript. Event Loop and Timers (in russian)
JavaScript. Event Loop and Timers (in russian)Mikhail Davydov
1.5K views76 slides
Dart - светлая сторона силы? by
Dart - светлая сторона силы?Dart - светлая сторона силы?
Dart - светлая сторона силы?Mikhail Davydov
599 views29 slides
JavaScript. Basics (in russian) by
JavaScript. Basics (in russian)JavaScript. Basics (in russian)
JavaScript. Basics (in russian)Mikhail Davydov
602 views51 slides
Ajax and Transports (in russian) by
Ajax and Transports (in russian)Ajax and Transports (in russian)
Ajax and Transports (in russian)Mikhail Davydov
570 views31 slides
Dump-IT Загрузка и инициализация JavaScript by
Dump-IT Загрузка и инициализация JavaScriptDump-IT Загрузка и инициализация JavaScript
Dump-IT Загрузка и инициализация JavaScriptMikhail Davydov
730 views30 slides
JavaScript. OOP (in russian) by
JavaScript. OOP (in russian)JavaScript. OOP (in russian)
JavaScript. OOP (in russian)Mikhail Davydov
727 views77 slides

Viewers also liked(12)

JavaScript. Event Loop and Timers (in russian) by Mikhail Davydov
JavaScript. Event Loop and Timers (in russian)JavaScript. Event Loop and Timers (in russian)
JavaScript. Event Loop and Timers (in russian)
Mikhail Davydov1.5K views
Dart - светлая сторона силы? by Mikhail Davydov
Dart - светлая сторона силы?Dart - светлая сторона силы?
Dart - светлая сторона силы?
Mikhail Davydov599 views
Ajax and Transports (in russian) by Mikhail Davydov
Ajax and Transports (in russian)Ajax and Transports (in russian)
Ajax and Transports (in russian)
Mikhail Davydov570 views
Dump-IT Загрузка и инициализация JavaScript by Mikhail Davydov
Dump-IT Загрузка и инициализация JavaScriptDump-IT Загрузка и инициализация JavaScript
Dump-IT Загрузка и инициализация JavaScript
Mikhail Davydov730 views
JavaScript. Loops and functions (in russian) by Mikhail Davydov
JavaScript. Loops and functions (in russian)JavaScript. Loops and functions (in russian)
JavaScript. Loops and functions (in russian)
Mikhail Davydov680 views
Introduction in Node.js (in russian) by Mikhail Davydov
Introduction in Node.js (in russian)Introduction in Node.js (in russian)
Introduction in Node.js (in russian)
Mikhail Davydov1.5K views
JavaScript. Event Model (in russian) by Mikhail Davydov
JavaScript. Event Model (in russian)JavaScript. Event Model (in russian)
JavaScript. Event Model (in russian)
Mikhail Davydov789 views
Михаил Давыдов: JavaScript. Базовые знания by Yandex
Михаил Давыдов: JavaScript. Базовые знанияМихаил Давыдов: JavaScript. Базовые знания
Михаил Давыдов: JavaScript. Базовые знания
Yandex4.9K views

Similar to Components now! (in russian)

DOM-шаблонизаторы – не только "быстро" by
DOM-шаблонизаторы – не только "быстро"DOM-шаблонизаторы – не только "быстро"
DOM-шаблонизаторы – не только "быстро"Roman Dvornov
3.7K views100 slides
Meet Magento Belarus 2015: Denis Bosak by
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakAmasty
1K views33 slides
БЭМ в дикой природе by
БЭМ в дикой природеБЭМ в дикой природе
БЭМ в дикой природеIhor Zenich
528 views77 slides
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17 by
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17MoscowJS
4.3K views55 slides
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011 by
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011camp_drupal_ua
312 views14 slides
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один by
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только одинSECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только одинSECON
198 views82 slides

Similar to Components now! (in russian)(20)

DOM-шаблонизаторы – не только "быстро" by Roman Dvornov
DOM-шаблонизаторы – не только "быстро"DOM-шаблонизаторы – не только "быстро"
DOM-шаблонизаторы – не только "быстро"
Roman Dvornov3.7K views
Meet Magento Belarus 2015: Denis Bosak by Amasty
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis Bosak
Amasty1K views
БЭМ в дикой природе by Ihor Zenich
БЭМ в дикой природеБЭМ в дикой природе
БЭМ в дикой природе
Ihor Zenich528 views
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17 by MoscowJS
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
MoscowJS4.3K views
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011 by camp_drupal_ua
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011
camp_drupal_ua312 views
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один by SECON
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только одинSECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON198 views
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один by SECON
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только одинSECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON343 views
Быстро о быстром by Roman Dvornov
Быстро о быстромБыстро о быстром
Быстро о быстром
Roman Dvornov5.9K views
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб... by Yandex
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
Yandex1.1K views
Олег Мохов: Веб-компоненты by Yandex
Олег Мохов: Веб-компонентыОлег Мохов: Веб-компоненты
Олег Мохов: Веб-компоненты
Yandex2.5K views
Максим Ширшин "Яндекс.Панель: осваиваем 250px" by Yandex
Максим Ширшин "Яндекс.Панель: осваиваем 250px"Максим Ширшин "Яндекс.Панель: осваиваем 250px"
Максим Ширшин "Яндекс.Панель: осваиваем 250px"
Yandex515 views
Desktop app based on node js and html5 by Provectus
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
Provectus765 views
Osvaivaem 250px max_shirshin by yaevents
Osvaivaem 250px max_shirshinOsvaivaem 250px max_shirshin
Osvaivaem 250px max_shirshin
yaevents243 views
Javascript-фреймворки:
 должен остаться только один by Sergey Xek
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
Sergey Xek1.7K views
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis) by Ontico
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Ontico1.4K views
автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4 by rit2011
автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4
автоматизированная сборка Flash приложений (as2, as3). андрей жданов. зал 4
rit2011514 views
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один by HappyDev
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
HappyDev294 views
Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний by Yandex
Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компанийАлександр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний
Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компаний
Yandex1.9K views

Components now! (in russian)