SlideShare une entreprise Scribd logo
1  sur  85
Télécharger pour lire hors ligne
Javascript-­‐фреймворки:

должен  остаться  только  один
Сергей  Аверин
Про что доклад
Как выбирали новый веб-фреймворк
1. Немного о компании
2. Бекграунд
3. Задача
4. Исследование существующего кода
5. Выбор на что смотреть
6. Техническая оценка вариантов
7. Переделка одного из вариантов «под себя»
8. Сравнение пилотных проектов
9. Оценка затрат на внедрение
2
3
Про компанию
4
Масштаб
• 5 000 000 пользователей
• 500 000 из них — корпоративные
• 700 сотрудников в 17 разных офисах
• Выпускаем много разного софта:
• коробочный под Windows,
• корпоративный с веб-интерфейсами,
• cloud-продукты с веб-интерфейсом.
5
Веб
Все отделы делают веб-часть по-разному
6
Проблема
7
Проблема
• Много разных технологий для веб-части
• Фронтенд пишут не только JS-разработчики
• Нет возможности подключить к работе верстальщика
• Качество кода сильно отличается
• Текущие технологии устарели
8
Задача
9
Курс
• Толстый клиент на JS/HTML/CSS
• Единая технология во всей компании
• Библиотека UI-компонентов
• Возможность работать разработчикам разных уровней
• Код должен быть понятен backend-разработчикам
10
Оценка
11
Что имеем?
• Dojo
• Сайт acronis.com — rich-client там не нужен
• Angular 1.x
• RoR+jQuery
• ExtJS 4
12
Что не так с ExtJS?
• Индексная страница документации содержит:
13
395
классов
8 уровней наследования
14
класс с 201 методами
15
16
17
18
~1% DOM-дерева главной
19
Кастомный UI компонент
layouting
20
layouting
21
deep in layouting code…
22
deep in layouting code…
23
Рафик, где мой трафик?
24
Ладно с фреймворком понятно, а
само приложение?
25
Полезли в код приложения
• Мало комментариев
• Жесткая связность
• Нет границы между Controller и View
26
State, BizLogicState, BizLogic State, BizLogic, Ui logic
Model
View
Child View
SubController
SubController2
Child
View
Controller
Server API
М С V
M+CV
27
Полезли в код приложения
• Мало комментариев
• Жесткая связность
• Нет границы между Controller и View
• Publish/Subscribe — вроде как правильный паттерн,

но не работает.
28
298 событий, ~18 вызовов
30
Вопрос на засыпку
Чего обычно нет в коде приложений с жесткой
связностью и плохим разграничением зон
отвественности?
31
32
33
Полезли в код приложения
Выводы…
34
Полезли в код приложения
Выводы…
Настоящие выводы
• Очень сложный фреймворк
• Запутаный получившийся код
• Мегабайты кода
• Нельзя подключить обычных верстальщиков
• Виноват ли фреймворк? — частично
35
Куда направить усилия?
• нужен проще UI слой
• менее связная архитектура
• четкое разделение зон отвественности (языков,
технологий)
• больше границ и правил для программистов
• и код, в котором просто разобраться
среднестатистическому разработчику.
36
Второй вывод
«производительность фронтенда»:
Улучшаем производительность фронтенд-разработчиков
(технологии + стандарты)
Получаем производительность фронтенд-продуктов
37
Процесс выбора
38
…что нам подскажет интернет?
«Хорошие художники копируют,
великие художники воруют.»
Пабло Пикассо
39
Что нам подскажет интернет?
Angular, backbone, meteor, Ember, polymer, Aurelia,
React, Vue, Mercury, Dojo, Knockback.js, CanJS,
Mithril, Ampersand, Knockout, Flight, TroopJS,
Batman, Spine, YUI, ExtJS, Google Web Toolkit,

Kendo UI, OpenUI5, Webix, Echo3, Enyo
40
Github
41
Кол-во строк кода
Angular
Backbone
Dojo
React
ExtJS
Yahoo UI
Ember
Meteor
Kendo
Polymer
Knockout
0 700 000 1 400 000
Конференции 2015
42
0
7,5
15
22,5
30
Кол-во докладов по фреймворкам
Angular React Ember Backbone Polymer Aurelia Meteor
Connect JS, US Frontporch.io, US Midwest JS, US
FullStack, UK WebTech Conference, DE
Тренды
43
Тренды
44
Codeanywhere(cloud IDE)
45
Рынок вакансий
46
0
125
250
375
500
Angular React Ember Backbone ExtJS Knockout Meteor
Кол-во резюме Кол-во вакансий
Что смотрим:
• AngularJS
• Ember
• Knockout
• Backbone.js + проекты-расширения
• React + Flux
• Dojo
• ExtJS 6 =)
47
<cut />: что не подошло
• Backbone
• Ember
• Knockout
• Dojo
• ExtJS 6
48
Версия 1.*
• Хорошая модульность
• Нет единого стиля разработки
• Трудно дебажить
• Многовато «магии»
• Сложно интегрировать с новыми технологиями
• Код будет несовместим с версией 2.*
49
Посмотрели 2.0.0-alpha
• Аж три языка — TypeScript, Javascript и Dart.
• Вот это выглядит как то, что надо…
• …только шансов на скорый релиз нет.
• …и везде в документации написано «предварительно»…
…«может поменяться»…
50
Не фреймворк, а UI-библиотека
• структурность
• понятный data flow, изолированность компонент
• нет какого-то магического синтаксиса (кастомных
атрибутов, фильтров)
• понятная и простая возможность тюнинга
производительности
• и даже серверный рендеринг
51
Архитектура, но не фреймворк
+ one-way data flow, синхронная обработка
+ Как приложение делится на независимые блоки с помощью
денормализации — понятно
+ Единый Event Bus (Dispatcher) и уникальные события —
круто.
- Как обеспечивается динамика — непонятно
- Смешение концепций — Store’ы и хранят данные и
реализуют бизнес-логику…
52
• Кода от самого Facebook считай, почти нет.
• Посмотрели реальные фреймворки — fluxxor, DeLorean,
ReFlux.js, Este.js:
• уже лучше, но все еще нет динамики
• видно общий прогресс стандартизации в виде ES6,
npm-модулей, изоморфности и т. д.
• с разработкой веб-приложений беда… невозможно,
например, создать два instance’а одного Store’а, чтобы
они не воевали друг с другом.
• нет интернационализации
• нет примеров тестов
53
Попутно нашли…
54
Typescript
Шанс уменьшить «креативность» разработчиков разных отделов
55
Контракты
56
Интерфейсы
57
А также
• Дженерики
• Декораторы
• Составные типы
58
В итоге?
• Вопросов стало только больше =)
• «Серебряной пули» нет. В этом плане ExtJS «держит
удар».
• Хотим фреймворк с Typescript!
59
Сфокусируемся
60
Вернемся к задаче
• JS-кодеры должны писать код, верстальщики — делать
шаблоны
• Нужен проще UI слой, понятнее архитектура, четкое
разделение (языков, технологий), больше границ,
правил и стандартов.
• На Typescript
• Не являющийся монолитным все-в-одном
61
Портируем Flux
• Взяли за основу Flux+React фреймворк Este.js, как
наиболее инновационный.
• Плавно переписывали, пока за три захода от него не
осталось ничего, кроме конфига сборщика.
62
Трудности
63
1. Store’ы
• Разные зоны ответственности
• Store -> область хранения данных (Store) и отдельно логика
(Controller) (сообразно тому, куда идет развитие Flux)
64
State, BizLogicState, BizLogic State, BizLogic, Ui logic
Model
View
Child View
SubController
SubController2
Child
View
Controller
Server API
М С V
Примерно как было
65
66
Ui logicData BizLogic
Isolated block
Isolated block
Isolated block
Child View
Child View
View
Server API
Store
Store
Store
М С V
ViewView
Child View
Child View
Dispatcher
Controller
SubController2
SubController
Action
Примерно как станет
2. JSX
• JSX — это опять мешанина кода и HTML.
• Обратили внимание на wix-react-templates
• Написали свой похожий
67
68
Шаблон
69
JS-­‐код  шаблона
70
UI-­‐компонент
3. Переводы (i18n)
• Все Flux-фреймворки обошли эту тему стороной
71
72
Шаблон
4. Динамика
• Нет динамического создания Store’ов и View-компонент.
• Как организовать независимую работу двух одинаковых
блоков на одной странице?
73
Что получилось?
74
Получилось:
• Хороший ООП с интерфейсами и дженериками
• С dependency injection
• Только две внешние библиотеки — React и lodash
• Можно поменять что угодно
• С нормальной сборкой
75
Битва «пилотов» 76
vs.6
Битва «пилотов»
Обрезанная копия существующей админки «с нуля»:
• ExtJS 6 + TypeScript
• Flux + React + Typescript
Сложности:
• анимации
• кастомный скроллбар
• интерфейс меняется для узких экранов
• мобильная версия
• JSON-REST API с авторизацией
77
Цифры*
ExtJS6 demo Flux+React demo
PRODUCTION BUILD
JS CODE SIZE
1,45 MB 336 KB
PRODUCTION BUILD
CSS CODE SIZE
345 KB 19.9 kB
# OF HTML DOM NODES 841 301
LOAD TIME
(PRODUCTION, NO CACHE)
1.54 s 0,59 s
LOAD TIME
(PRODUCTION, CACHE)
1.42 s 0,58 s
TIME UNTIL FIRST API REQUEST 0,405 s 0,168 s
JS INIT TIME (GOOGLE CHROME) 0,345 s 0,158 s
PRODUCTION BUILD MEMORY USAGE
(GOOGLE CHROME)
24.2 Mb 11.8 Mb
* В реальном проекте разница в объемах кода и скорости
инициализации будет меньше
78
Переход
79
Оценка работы над UI
А что понадобится?
• 60 простых
• 15 сложных
80
81
Оценка работы над UI
• 10% = 2000 строк кода HTML+CSS+TS
• Заняло 4 дня 1 человека
82
Технология миграции
Варианты:
1. Новые проекты пишем на новом фреймворке.
2. Старый код не трогаем, новый встраиваем
«независимыми блоками» — как iframe или
кастомный UI-компонент для ExtJS.
3. При модификации старого кода — или правь, как
есть, или портируй.
83
84
85
@ryba_xek
ryba.xek
Слайды,
предыдущие доклады:
http://averin.ru/slides/
http://slideshare.net/rybaxeks@averin.ru
Спасибо!
Вопросы?

Contenu connexe

Tendances

13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...IT-Portfolio
 
Как анимировать тысячи объектов на карте и не подвесить браузер
Как анимировать тысячи объектов на карте и не подвесить браузерКак анимировать тысячи объектов на карте и не подвесить браузер
Как анимировать тысячи объектов на карте и не подвесить браузерDotNetConf
 
Test Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsTest Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsAnton Vidishchev
 
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)Ontico
 
JavaScript завтра
JavaScript завтраJavaScript завтра
JavaScript завтраSergey Rubanov
 
Александр Сычев "Статика и динамика. Как фреймворки помогут прокачать ваше пр...
Александр Сычев "Статика и динамика. Как фреймворки помогут прокачать ваше пр...Александр Сычев "Статика и динамика. Как фреймворки помогут прокачать ваше пр...
Александр Сычев "Статика и динамика. Как фреймворки помогут прокачать ваше пр...IT Event
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-AccessSerghei Urban
 
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Ontico
 
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...Ontico
 
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Ontico
 
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
Frontendlab: Cравнить Несравнимое  - Юлия ПучнинаFrontendlab: Cравнить Несравнимое  - Юлия Пучнина
Frontendlab: Cравнить Несравнимое - Юлия ПучнинаGeeksLab Odessa
 
Денис Паясь
Денис ПаясьДенис Паясь
Денис ПаясьCodeFest
 
Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Vladimir Malyk
 
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевПакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевPositive Hack Days
 
Moscow js node.js enterprise development
Moscow js node.js enterprise developmentMoscow js node.js enterprise development
Moscow js node.js enterprise developmentPavel Tiunov
 
Nival: Как не увлечься погоней за универсализацией компонент
Nival: Как не увлечься погоней за универсализацией компонентNival: Как не увлечься погоней за универсализацией компонент
Nival: Как не увлечься погоней за универсализацией компонентDevGAMM Conference
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruYandex
 
Opensource на .NET
Opensource на .NETOpensource на .NET
Opensource на .NETlugnsk
 

Tendances (20)

13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...
 
Как анимировать тысячи объектов на карте и не подвесить браузер
Как анимировать тысячи объектов на карте и не подвесить браузерКак анимировать тысячи объектов на карте и не подвесить браузер
Как анимировать тысячи объектов на карте и не подвесить браузер
 
Chef @DevWeb
Chef @DevWebChef @DevWeb
Chef @DevWeb
 
Test Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsTest Driven Development in .NET Applications
Test Driven Development in .NET Applications
 
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
 
JavaScript завтра
JavaScript завтраJavaScript завтра
JavaScript завтра
 
Александр Сычев "Статика и динамика. Как фреймворки помогут прокачать ваше пр...
Александр Сычев "Статика и динамика. Как фреймворки помогут прокачать ваше пр...Александр Сычев "Статика и динамика. Как фреймворки помогут прокачать ваше пр...
Александр Сычев "Статика и динамика. Как фреймворки помогут прокачать ваше пр...
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-Access
 
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
 
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
 
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
 
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
Frontendlab: Cравнить Несравнимое  - Юлия ПучнинаFrontendlab: Cравнить Несравнимое  - Юлия Пучнина
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
 
Денис Паясь
Денис ПаясьДенис Паясь
Денис Паясь
 
Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?
 
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевПакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
 
Moscow js node.js enterprise development
Moscow js node.js enterprise developmentMoscow js node.js enterprise development
Moscow js node.js enterprise development
 
.NET Development
.NET Development.NET Development
.NET Development
 
Nival: Как не увлечься погоней за универсализацией компонент
Nival: Как не увлечься погоней за универсализацией компонентNival: Как не увлечься погоней за универсализацией компонент
Nival: Как не увлечься погоней за универсализацией компонент
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
 
Opensource на .NET
Opensource на .NETOpensource на .NET
Opensource на .NET
 

En vedette

05 HappyDev-lite-2015 autumn. Михаил Хохлов. Front-end.
05 HappyDev-lite-2015 autumn. Михаил Хохлов. Front-end.05 HappyDev-lite-2015 autumn. Михаил Хохлов. Front-end.
05 HappyDev-lite-2015 autumn. Михаил Хохлов. Front-end.HappyDev-lite
 
Знакомство с ember.js
Знакомство с ember.jsЗнакомство с ember.js
Знакомство с ember.jsArtem Suschev
 
Реактивные интерфейсы с React.js и БЭМ: мастер-класс — Слава Аристов, Яндекс
Реактивные интерфейсы с React.js и БЭМ: мастер-класс — Слава Аристов, ЯндексРеактивные интерфейсы с React.js и БЭМ: мастер-класс — Слава Аристов, Яндекс
Реактивные интерфейсы с React.js и БЭМ: мастер-класс — Слава Аристов, ЯндексYandex
 
Принципы проектирования S.O.L.I.D
Принципы проектирования S.O.L.I.DПринципы проектирования S.O.L.I.D
Принципы проектирования S.O.L.I.DAndreyGeonya
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...JSib
 

En vedette (6)

05 HappyDev-lite-2015 autumn. Михаил Хохлов. Front-end.
05 HappyDev-lite-2015 autumn. Михаил Хохлов. Front-end.05 HappyDev-lite-2015 autumn. Михаил Хохлов. Front-end.
05 HappyDev-lite-2015 autumn. Михаил Хохлов. Front-end.
 
Знакомство с ember.js
Знакомство с ember.jsЗнакомство с ember.js
Знакомство с ember.js
 
Реактивные интерфейсы с React.js и БЭМ: мастер-класс — Слава Аристов, Яндекс
Реактивные интерфейсы с React.js и БЭМ: мастер-класс — Слава Аристов, ЯндексРеактивные интерфейсы с React.js и БЭМ: мастер-класс — Слава Аристов, Яндекс
Реактивные интерфейсы с React.js и БЭМ: мастер-класс — Слава Аристов, Яндекс
 
Принципы проектирования S.O.L.I.D
Принципы проектирования S.O.L.I.DПринципы проектирования S.O.L.I.D
Принципы проектирования S.O.L.I.D
 
Angular2
Angular2Angular2
Angular2
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 

Similaire à 2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один

Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Ontico
 
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только одинSECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только одинSECON
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практикеDenis Tuchin
 
Компонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективноКомпонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективноRoman Dvornov
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17MoscowJS
 
Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтендViacheslav Slinko
 
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Ontico
 
Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2Elogic Magento Development
 
Промышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыПромышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыMikhail Payson
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Fwdays
 
webpack: 7 бед - один ответ
webpack: 7 бед - один ответwebpack: 7 бед - один ответ
webpack: 7 бед - один ответDenis Izmaylov
 
D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"Dev2Dev
 
Как приручить реактивное программирование
Как приручить реактивное программированиеКак приручить реактивное программирование
Как приручить реактивное программированиеDotNetConf
 
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере" Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"MskDotNet Community
 

Similaire à 2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один (20)

Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
 
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только одинSECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
 
WebAssembly
WebAssemblyWebAssembly
WebAssembly
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
Компонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективноКомпонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективно
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
 
Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтенд
 
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
 
Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2
 
Промышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыПромышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. Инструменты
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"
 
Team workflow
Team workflowTeam workflow
Team workflow
 
webpack: 7 бед - один ответ
webpack: 7 бед - один ответwebpack: 7 бед - один ответ
webpack: 7 бед - один ответ
 
D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"
 
Как приручить реактивное программирование
Как приручить реактивное программированиеКак приручить реактивное программирование
Как приручить реактивное программирование
 
Sivko
SivkoSivko
Sivko
 
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере" Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 

Plus de HappyDev

2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...HappyDev
 
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?HappyDev
 
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli scriptHappyDev
 
2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?HappyDev
 
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данныхHappyDev
 
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...HappyDev
 
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложенийHappyDev
 
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложенийHappyDev
 
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBenchHappyDev
 
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестированииHappyDev
 
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...HappyDev
 
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...HappyDev
 
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...HappyDev
 
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерахHappyDev
 
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...HappyDev
 
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...HappyDev
 
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...HappyDev
 
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхроннымHappyDev
 
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...HappyDev
 
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых системHappyDev
 

Plus de HappyDev (20)

2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
2015-12-06 Aнтон Непомнящих - Принципы канбан и теории ограничений на примере...
 
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?
2015-12-05 Антон Непомнящих - Agile — как уложиться в сроки и бюджет?
 
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
2015 12-05 Александр Шиповалов - Инструмент для тестирования Sikuli script
 
2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?2015-12-06 Константин Борисов - Как собеседовать программиста?
2015-12-06 Константин Борисов - Как собеседовать программиста?
 
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
 
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
2015-12-06 Букуров Алексей - Автоматическое формирование интерфейса по метаоп...
 
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений
2015-12-06 Евгений Тюменцев - Практики разработки серверных приложений
 
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
2015-12-06 Александр Чернышев - Технологии открытости мобильных приложений
 
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
 
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
2015-12-05 Александр Шиповалов - Веселые картинки в тестировании
 
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
2015-12-05 Александр Бындю, Андрей Шапиро - Пять самых важных составляющих пр...
 
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
2015-12-05 Александр Коротков, Иван Панченко - Слабо-структурированные данные...
 
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
2015-12-06 Юрий Мельничек - Руководство для разработчиков по маркетингу мобил...
 
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
2015-12-06 Сергей Хрущев - Человеческим языком о суперкомпьютерах
 
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
 
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
 
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
2015-12-06 Артем Зиненко - Что делать, если браузеры клиентов действуют проти...
 
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
2015-12-06 Антон Тарасенко - Ваш следующий сервис будет асинхронным
 
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
2015-12-06 Андрей Коновалов - От сервисной компании к продуктовой: что нужно,...
 
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
 

2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один